javascript - 如何将数组列表格式化为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
解决方案
你可以使用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 ), {})
推荐阅读
- python - Python Seaborn - 为每个数值变量创建箱线图
- huawei-mobile-services - 如何找到华为广告发布控制台?
- windows - 在 dockerfile 中,如何从 docker 映像中删除目录及其内容?(视窗)
- docker - 如何优化 docker 镜像?
- android - 使用 Flowable (RxJava) 时如何避免不必要的 RecyclerView 重新渲染?
- reactjs - 单击时样式反应组件
- reactjs - 在选择标签中添加默认值选项
- sql - 如何将被划分为其他变量的行作为一个整体进行计数?
- asp.net-mvc - 动作参数可以是 ASP.NET WEB API 中的模型吗?
- ios - 隐藏内部视图并快速自动调整单元格的高度