遍历JSON对象并根据键名生成数组

时间:2018-10-04 06:28:40

标签: javascript

我有以下json对象:

[{"i_value":"1","i_value_2":"1"},
{"i_value":"24","i_value_2":"24"}]

然后我有以下循环:

let setData = [];
for (let i = 0; i < response.data.length; i++) {
    if ('access key name' === 'i_value') {
        setData.push(response.data[i].i_value)
    }
}
setData = setData.map(Number);
console.log(setData);

我只想在键名setData而不是=== i_value时填充新的i_value_2数组

我尝试了以下操作:

let setData = [];
let keys = Object.keys(response.data);
for (let i = 0; i < response.data.length; i++) {
    if (keys[i] === 'i_value') {
        setData.push(response.data[i].i_value)
    }
}
setData = setData.map(Number);
console.log(setData);

但这不起作用。有什么想法吗?

2 个答案:

答案 0 :(得分:5)

只需获取原始数据和.map,提取i_value属性:

const input = [{"i_value":"1","i_value_2":"1"},
{"i_value":"24","i_value_2":"24"}];

console.log(
  input.map(({ i_value }) => Number(i_value))
);

还要注意,没有像JSON对象这样的东西。如果您有一个对象,那么您只有一个对象。 JSON格式是字符串的格式,可以通过JSON.parse转换为对象。

答案 1 :(得分:2)

您可以使用map()创建一个新数组,其结果是通过以下方式在调用数组中的每个元素上调用提供的函数:

var response = {}
response.data = [{"i_value":"1","i_value_2":"1"},
{"i_value":"24","i_value_2":"24"}]

let setData = response.data.map(o => Number(o.i_value));

console.log(setData);