如何解决如何循环嵌套对象和数组Javascript?
myObj = { "key1": [{"value": 1,"date": "2020"}],[{"value": 2,"key2": [{"value": 3,[{"value": 4,"date": "2020"}]
}
我需要在此嵌套对象中获取“值”键的值,然后将其重新分配为键的数组。
所以我的理想结果是
myObj = { "key1": [1,2],"key2": [3,4]
}
我做了
所以我试图遍历对象
for (var [k,v] of Object.entries(myObj)) {
v.forEach(function convertJSON(arr) {
console.log(arr.value);
});
console.log(k,v);
}
有效,
1
2
"key1": [{"value": 1,"date": "2020"}]
3
4
"key2": [{"value": 3,"date": "2020"}]
但是当我尝试重新分配值时,它给了我未定义的
for (var [k,v] of Object.entries(myObj)) {
newValue = v.forEach(function convertJSON(arr) {
console.log(arr.value);
});
v = newValue;
console.log(k,v);
}
更新-添加我的数据
所以我认为它应该这样
myData = { "impressions": [{value: 559,end_time: "2020-08-31T07:00:00+0000"}],[{value: 519,end_time: "2020-09-01T07:00:00+0000"}],"reach": [{value: 334,[{value: 398,end_time: "2020-09-01T07:00:00+0000"}}
}
解决方法
您可以拍摄嵌套对象的平面图。
const
object = { key1: [{ value: 1,date: "2020" },{ value: 2,date: "2020" }],key2: [{ value: 3,{ value: 4,date: "2020" }] },result = Object.fromEntries(Object
.entries(object)
.map(([k,v]) => [k,v.map(({ value }) => value)])
);
console.log(result);
,
您可以使用Array.prototype.reduce()
方法来获得所需的输出。数组的语法reduce array.reduce(function(total,currentValue,currentIndex,arr),initialValue)
。首先使用Object.keys()
方法获取所有键,然后遍历并使用Array.prototype.map()
方法映射该键对象的每个项目。
const myObj = {
impressions: [
{ value: 559,end_time: '2020-08-31T07:00:00+0000' },{ value: 519,end_time: '2020-09-01T07:00:00+0000' },],reach: [
{ value: 334,{ value: 398,};
const ret = Object.keys(myObj).reduce((prev,c) => {
const p = prev;
p[c] = myObj[c].map((x) => x.value);
return p;
},{});
console.log(ret);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。