遍历Javscript中的对象列表时如何创建新对象?

时间:2019-02-05 11:21:31

标签: javascript

我有一个类似于下面的字符串数组

'[{"Bangalore": ["blr", "Bengaluru", "bangalore", "BANGALORE", "Bangalore"]}, {"delhi": ["del", "new delhi", "delhi", "nd", "dilli"]}]'

现在我想循环遍历每个对象并创建自己的新对象并将其存储在列表中

这就是我要做的

json_data = JSON.parse('[{"Bangalore": ["blr", "Bengaluru", "bangalore", "BANGALORE", "Bangalore"]}, {"delhi": ["del", "new delhi", "delhi", "nd", "dilli"]}]')   

tuples_to_return = []
for(i=0;i<json_data.length;i++) {
    for(key in json_data[i]) {
        //console.log(key, json_data[i][key])
        tuples_to_return.push({key: json_data[i][key].join()})
    }
}

console.log(tuples_to_return)

但是奇怪的是输出是

[ { key: 'blr,Bengaluru,bangalore,BANGALORE,Bangalore' },
  { key: 'del,new delhi,delhi,nd,dilli' } ]

为什么键本身作为字符串打印?我期待像这样的输出

[ { "Bangalore": 'blr,Bengaluru,bangalore,BANGALORE,Bangalore' },
      { "delhi": 'del,new delhi,delhi,nd,dilli' } ]

当我执行key的console.log()时类似

for(i=0;i<json_data.length;i++) {
        for(key in json_data[i]) {
            console.log(key)
        }
    }

然后它给了我键值

Bangalore
delhi

然后,当我尝试制作对象并将钥匙插入那里时会发生什么?

1 个答案:

答案 0 :(得分:0)

尝试一下:

json_data = JSON.parse('[{"Bangalore": ["blr", "Bengaluru", "bangalore", "BANGALORE", "Bangalore"]}, {"delhi": ["del", "new delhi", "delhi", "nd", "dilli"]}]')   

tuples_to_return = []
for(i=0;i<json_data.length;i++) {
    for(key in json_data[i]) {
        //console.log(key, json_data[i][key])
        tuples_to_return.push({[key]: json_data[i][key].join()})
    }
}

console.log(tuples_to_return)

如果设置{key:'foo'},则将获得key的属性名称。如果设置{[key]:'foo'},则将获得包含任何字符串键的属性名称。

我从上面的代码中得到的响应是:

[
  {"Bangalore":"blr,Bengaluru,bangalore,BANGALORE,Bangalore"},
  {"delhi":"del,new delhi,delhi,nd,dilli"}
]