对象数组属性提取循环的简写

时间:2017-07-13 13:42:52

标签: javascript arrays

情境:

我需要来自数组中每个对象的相同属性。

示例: fiddle

var texts = [];
var arr = [{text:"first"}, {text:"second"}]
arr.forEach(item => {
    texts.push(item.text);
});
console.log(text); // >(2) [ "first", "second" ]

问题:

这个概念是否有“速记”版本?

例如。 arr.childPropFilter("text")

5 个答案:

答案 0 :(得分:2)

使用map()返回基于迭代原始

的新数组
var texts = arr.map(o => o.text)

答案 1 :(得分:1)

你的意思是这样的吗?

console.log(arr.map(t => t.text));

答案 2 :(得分:0)

您可以像这样使用 Array.prototype.map() method

var texts = arr.map(function(obj){
  return obj.text;
});

<强>演示:

var arr = [{text:"first"}, {text:"second"}]
var texts = arr.map(function(obj){
  return obj.text;
});
console.log(texts);

答案 3 :(得分:0)

Yes.try with Array#map() .Its返回新数组

var arr = [{text:"first"}, {text:"second"}]
var texts =arr.map(item => item.text);

console.log(texts);

答案 4 :(得分:0)

这是一个常见的需求,库通常提供这样的功能:

Ramda - pluck

pluck('text', arr)

下划线 - pluck

pluck(arr, 'text')

lodash - map

map(arr, 'text')

请注意,lodash也有pluck,但chose to remove it支持map的替代用法。所以这是一个你可能决定保留的常见抽象。最常见的名称是pluck,写起来很容易:

const pluck = (prop) => (list) => list.map(obj => obj[prop]);

pluck('test')(arr);