微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何循环嵌套对象和数组Javascript?

如何解决如何循环嵌套对象和数组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);
    }

更新-添加我的数据

enter image description here

所以我认为它应该这样

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 举报,一经查实,本站将立刻删除。