【发布时间】:2022-01-17 05:18:50
【问题描述】:
我想将 JSON 作为输入并生成 2 个数组,一个仅包含键,另一个仅包含值。但是,如果键和值在数值上相等,则该对将不会出现在这些数组中。我该如何解决?
【问题讨论】:
标签: javascript arrays json
我想将 JSON 作为输入并生成 2 个数组,一个仅包含键,另一个仅包含值。但是,如果键和值在数值上相等,则该对将不会出现在这些数组中。我该如何解决?
【问题讨论】:
标签: javascript arrays json
如果我明白,你在问什么,有两个内置函数,给你的键和数据是分开的,不需要循环。
它适用于对象和数组:
var data = {a:1, b:2, c:3, '1':5,'2':'a'};
// just to visualisze the input data
console.info('data-object:', JSON.stringify(data));
// extracted keys
console.info('keys:', Object.keys(data));
// extracted values
console.info('values:', Object.values(data));
var list = [1,2,3,4];
// just to visualisze the input data
console.info('data-list:', JSON.stringify(list));
// extracted keys
console.info('keys:', Object.keys(list));
// extracted values
console.info('values:', Object.values(list));
var data2 = {"1":1, "2":2};
// just to visualisze the input data
console.info('data-list:', JSON.stringify(data2));
// extracted keys
console.info('keys:', Object.keys(data2));
// extracted values
console.info('values:', Object.values(data2));
【讨论】:
{1:1, 2:2}
您可以使用Object.entries 遍历对象的key,values,然后检查键和值是否不同,将它们放入相关数组中。像这样:
let obj = {a:5, b:6, c:3, '1':4,'2':2};
let keys = [] , values = [];
Object.entries(obj).forEach(([key,value])=> {
if(key != value){
keys.push(key);
values.push(value)
}
});
console.log('keys:',keys);
console.log('values:', values);
【讨论】: