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

从ES6中的对象数组中获取一个具有一个属性的数组[重复]

  •  1
  • Juicy  · 技术社区  · 7 年前

    这个问题已经有了答案:

    我有一个这样的数组:

    [
      {foo: 1, bar: 2},
      {foo: 3, bar: 4}
    ]
    

    最简洁和ES6的方法是获得 foo 价值观?

    预期结果为:

    [1, 3]
    
    4 回复  |  直到 7 年前
        1
  •  5
  •   Ivan Jeffrey Zhao    7 年前

    使用 .map() 方法循环遍历项。

    简单来说:

    这个 map() 方法创建一个新数组,其结果是对调用数组中的每个元素调用一个提供的函数。

    - MDN web docs

    方法允许为数组的每个元素调用一次提供的回调函数。它创建一个由映射元素组成的新数组。 element index 作为回调的参数。后者是可选的(当您在回调中不需要它时)。

    这是一种访问JavaScript中对象的干净方法。代码如下:

    let array = [
      {foo: 1, bar: 2},
      {foo: 3, bar: 4}
    ]
    
    console.log(array.map( e => e.foo ))
        2
  •  1
  •   Nina Scholz    7 年前

    你可以用一个 destructuring assignment 并使用返回此属性 Array#map .

    var objects = [{ foo: 1, bar: 2 }, { foo: 3, bar: 4 }],
        array = objects.map(({ foo }) => foo);
    
    console.log(array);
        3
  •  1
  •   lipp    7 年前

    array.prototype.map方法适用于将一个数组映射/转换为另一个大小相同的数组。传递一个函数,该函数从数组中的一个元素转换为新的元素。截至2018年,使用所谓的fat arrow语法定义转换的匿名函数被认为是“现代”的:

    const x = [{foo: 1, bar: 2}, {foo: 3, bar: 4}]
    x.map(entry => entry.foo)
    

    它也被认为是“现代”试图避免写作 for 循环。

        4
  •  0
  •   Diego Victor de Jesus    7 年前

    扩展lipp的答案:

    const x = [{foo: 1, bar: 2}, {foo: 3, bar: 4}];
    var y = x.map(entry => entry.foo);
    

    在第一行中,创建对象数组。 第二行使用一个小型lambda表达式从x数组返回一个foo属性数组,并将其赋给y。