循环访问JSON对象并根据键名生成数组

dex*_*ter 0 javascript

我有以下json对象:

[{"i_value":"1","i_value_2":"1"},
{"i_value":"24","i_value_2":"24"}]
Run Code Online (Sandbox Code Playgroud)

然后我有以下循环:

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);
Run Code Online (Sandbox Code Playgroud)

我只想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);
Run Code Online (Sandbox Code Playgroud)

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

Cer*_*nce 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))
);
Run Code Online (Sandbox Code Playgroud)

还要注意,没有JSON对象这样的东西.如果你有一个物体,你就有一个物体; JSON格式是可以通过转换为对象的字符串格式JSON.parse.