【问题标题】:Array of objects iteration to get key and value对象数组迭代以获取键和值
【发布时间】:2018-07-12 19:59:43
【问题描述】:

我有一个对象数组。我想有效地从中提取键及其值。

例子:

let data = [{'Car':'Honda'}, {'car':'Volvo'}];

我希望汽车作为键和它的值分开。我如何以有效的方式实现它(即使使用 lodash)?

预期输出将是:

key : Car  value : Honda
key : car  value : Volvo

【问题讨论】:

  • 预期输出是什么?键和值的格式是什么?在数组中,在组合对象中?
  • 您的预期输出是什么?你试过什么了?如果您不展示您的作品,我们将无法帮助您。
  • 你的意思是这样的吗? data.map(Object.entries);

标签: javascript typescript lodash


【解决方案1】:

您可以遍历数组并访问每个相关对象的键和属性值。

let data = [{
  'Car': 'Honda',
  'hello': 'hi'
}, {
  'car': 'Volvo'
}];

data.forEach((obj) => {
	Object.keys(obj).forEach((key) => {
  		console.log("key : " + key + " - value : " + obj[key]);
  });
});

lodash sn-p

let data = [{
  'Car': 'Honda',
  'hello': 'hi'
}, {
  'car': 'Volvo'
}];

_.forEach(data, (obj) => {
	_.forEach(Object.keys(obj), (key) => {
  		console.log("key : " + key + " - value : " + obj[key]);
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.core.min.js"></script>

【讨论】:

  • 这也是我正在做的,但我需要更高效的东西。你能给我一些使用 lodash 的例子吗?
【解决方案2】:

Object.entrieshttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries

const newArray = data.map((item) => Object.entries(item));
// [[['Car', 'Honda']], [['car', 'Volvo']]]

【讨论】:

    【解决方案3】:

    您可以使用Object.entries(obj) 来迭代键和值。

    data.forEach((obj) => 
    Object.entries(obj).forEach(([key, value]) => 
    console.log(key, value)));
    

    let data = [{
      'Car': 'Honda',
      'hello': 'hi'
    }, {
      'car': 'Volvo'
    }];
    
    data.forEach((obj) => 
    Object.entries(obj).forEach(([key, value]) => 
    console.log(key, value)));

    【讨论】:

      【解决方案4】:

      简单明了的方法是:

      var data = [{
        'Car': 'Honda'
      }, {
        'Car': 'Volvo'
      }];
      
      var j = 0;
      var carNames= [];
      for (var i = 0; i < data.length; i++){
         var nameOfCar = data[i];
         if(nameOfCar.hasOwnProperty('Car')){
            carNames[j] = nameOfCar['Car'];
            j++;
         }
      }
      
      
      console.log(carNames);

      【讨论】:

      • 不过我不会称这是一种“简单明了的方法”
      • @aloisdg 为什么不呢? OP 不知道循环遍历数组。作为一个新手要理解 for 每个循环是很困难的,但是使用 for 循环就容易多了。
      • 我不知道OP在寻找什么,也不知道OP的背景。
      猜你喜欢
      • 2020-07-26
      • 1970-01-01
      • 1970-01-01
      • 2018-12-06
      • 2017-02-09
      • 2019-06-26
      • 2021-12-07
      • 2022-01-20
      • 2016-02-08
      相关资源
      最近更新 更多