代码之家  ›  专栏  ›  技术社区  ›  nb_nb_nb

键数组,在json对象中查找值

  •  0
  • nb_nb_nb  · 技术社区  · 5 年前

    我的阵列:

    arr= ['abc', 'xyz', 'pqr']

    d、 数据格式:

    [{'abc': 123, 'xyz': 321, 'pqr': 345}, {'abc': 111, 'xyz': 222, 'pqr': 333}.....]
    

    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 .

    1 回复  |  直到 5 年前
        1
  •  1
  •   PurpSchurp    5 年前

    尝试

    for(var j = 0; d.data.length; j++){
      for(var i = 0; i < arr.length; i++){
        let valss = d.data[j][arr[i]]
      }
    }
    

        2
  •  0
  •   Ivan86    5 年前

    您可以执行以下操作:

    一个结果数组中的所有值:

    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
  •  0
  •   Luís Ramalho    5 年前

    如果要获取 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
  •  0
  •   Anuj Thakur    5 年前

    你可以试试这样的方法:

    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)