键数组,在 json 对象中查找值
Posted
技术标签:
【中文标题】键数组,在 json 对象中查找值【英文标题】:Array of keys, find values in json object 【发布时间】:2020-07-22 19:57:29 【问题描述】:我有一个包含键的数组,我需要在一个 json 对象数组中找到。
我的数组:
arr= ['abc', 'xyz', 'pqr']
d.数据格式:
['abc': 123, 'xyz': 321, 'pqr': 345, 'abc': 111, 'xyz': 222, 'pqr': 333.....]
我有一个 json 对象。
arr 是一个键列表,我需要在 json 对象数组中找到它们的值。
我有一个巨大的数组 (arr),这就是我不想对其进行硬编码的原因。
我已经尝试过:
arr.forEach(x =>
let valss = d.data.map(structure => Object.values(structure.x));
);
我收到了Uncaught (in promise) TypeError: Cannot convert undefined or null to object
。
如何获取数组中键的值?
【问题讨论】:
您可以添加您正在寻找此方法的结果示例吗? 我想使用数组中的键从 d.data 中获取值 你期待像[[123, 321, 345], [111, 222, 333],...]
这样的东西吗?
这个问题和JSON无关,标签和所有引用都应该去掉(只是全局去掉“json”)。
【参考方案1】:
试试
for(var j = 0; d.data.length; j++)
for(var i = 0; i < arr.length; i++)
let valss = d.data[j][arr[i]]
提供您的数据样本,您需要做的就是遍历字典中的每个对象,然后遍历您的键以获取字典中的键。为您提供您期望的价值。
【讨论】:
@noob 我为您提供的数据结构添加了更改。遍历数组中的每一个对象,然后根据key循环遍历字典中的每一项【参考方案2】:您可以执行以下操作:
一个结果数组中的所有值:
var arr = ['abc', 'xyz', 'pqr'];
var data = ['abc': 123, 'xyz': 321, 'pqr': 345, 'abc': 111, 'xyz': 222, 'pqr': 333];
var result = [];
for(let item of data)
arr.forEach(function(el, i)
if(item.hasOwnProperty(el))
result.push(item[el]);
);
console.log(result);
或者为数据数组中的每个对象单独的子数组:
var arr = ['abc', 'xyz', 'pqr'];
var data = ['abc': 123, 'xyz': 321, 'pqr': 345, 'abc': 111, 'xyz': 222, 'pqr': 333];
var result = [];
for(let item of data)
var temp = [];
arr.forEach(function(el, i)
if(item.hasOwnProperty(el))
temp.push(item[el]);
);
if(temp.length > 0)
result.push(temp);
console.log(result);
【讨论】:
【参考方案3】:如果您想获取data
数组中对象的值,您可以简单地映射它并仅返回值。像这样:data.map((o) => Object.values(o));
let arr = ["abc", "xyz", "pqr"];
let data = [
abc: 123, xyz: 321, pqr: 345 ,
abc: 111, xyz: 222, pqr: 333 ,
];
let values = data.map((o) => Object.values(o));
console.log(values) // [ [ 123, 321, 345 ], [ 111, 222, 333 ] ]
【讨论】:
【参考方案4】:你可以试试这样的:
var arr= ['abc', 'xyz', 'pqr']
var data = ['abc': 123, 'xyz': 321, 'pqr': 345, 'abc': 111, 'xyz': 222, 'pqr': 333]
var values = arr.map( key =>
let vals = data.map( val =>
return val[key]
)
return vals
)
console.log(values)
【讨论】:
以上是关于键数组,在 json 对象中查找值的主要内容,如果未能解决你的问题,请参考以下文章