【问题标题】:Array of keys, find values in json object键数组,在 json 对象中查找值
【发布时间】: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”)。

标签: javascript jquery arrays json object


【解决方案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)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-08
        • 2022-08-18
        • 1970-01-01
        相关资源
        最近更新 更多