键数组,在 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) =&gt; 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 对象中查找值的主要内容,如果未能解决你的问题,请参考以下文章

使用奇怪的 JSON 文件格式查找汇率键值

在具有特定键的特定值的数组中查找对象的索引[重复]

如何在 JavaScript 中的对象数组中查找值?

JSON数组对象某个属性值查找

查找存储在数组中的对象值键内的单词

从嵌套数组对象中查找对象