首页 > 解决方案 > 如何将数组列表格式化为json

问题描述

我正在尝试从数组列表中获取 json 对象

arrayList [
0: {name: "01", value: "3424234234"} 
1: {name: "17", value: "26021734"}
2: {name: "10", value: "435345"} 
3: {name: "21", value: "3453"}]

我已将上面的数组转换为 json,如下所示

var getCode={};
getCode = Object.assign({}, arrayList );

我得到的结果如下

getCode 
{
0: {name: "01", value: "3424234234"} 
1: {name: "17", value: "26021734"} 
2: {name: "10", value: "435345"} 
3: {name: "21", value: "3453"} 
}

但我需要如下结果

aiCode: 
{
01: "3424234234", 
17: "26021734", 
10: "435345", 
21: "3453"
}

我怎样才能得到上面的字符串化的JSON

标签: javascriptjson

解决方案


你可以使用Array#reduce方法。

var res = arrayList
  // iterate over the array
  .reduce((obj, o) => {
    // define property 
    obj[o.name] = o.value;
    // return the object
    return obj;
    // set initial value as an empty object
  }, {})

var arrayList = [{
    name: "01",
    value: "3424234234"
  },
  {
    name: "17",
    value: "26021734"
  },
  {
    name: "10",
    value: "435345"
  },
  {
    name: "21",
    value: "3453"
  }
];

var res = arrayList.reduce((obj, o) => {
  obj[o.name] = o.value;
  return obj;
}, {})

console.log(res)


ES6 对象解构相同。

var res = arrayList.reduce((obj, { name, value }) => {
  obj[name] = value;
  return obj;
}, {})

var arrayList = [{
    name: "01",
    value: "3424234234"
  },
  {
    name: "17",
    value: "26021734"
  },
  {
    name: "10",
    value: "435345"
  },
  {
    name: "21",
    value: "3453"
  }
];

    

console.log(res)

具有扩展语法的单线解决方案:

var res = arrayList.reduce((obj, { name, value }) => ({ [name] : value, ...obj }), {})

或者

var res = arrayList.reduce((obj, { name, value }) => (obj[name] = value, obj ), {})

推荐阅读