仅返回Javascript中对象数组中的某些属性

rag*_*mon 21 javascript arrays javascript-objects

如果我有这样的对象

var object = function(key,text)
{
    this.key = key;
    this.text = text;
}
Run Code Online (Sandbox Code Playgroud)

并创建这些对象的数组

var objArray = [];
objArray[0] = new object('key1','blank');
objArray[1] = new object('key2','exampletext');
objArray[2] = new object('key3','moretext');
Run Code Online (Sandbox Code Playgroud)

有没有办法我只能检索数组中所有对象的一个​​属性?例如:

var keyArray = objArray["key"]; 
Run Code Online (Sandbox Code Playgroud)

上面的例子没有将set keyArray返回给任何东西,但我希望它会被设置为这样的东西:

keyArray = [
    'key1',
    'key2',
    'key3']
Run Code Online (Sandbox Code Playgroud)

有没有人知道如何在不迭代objArray并手动将每个键属性复制到键数组的情况下执行此操作?

Jac*_*all 25

使用Array.prototype.map()函数可以轻松完成此操作:

var keyArray = objArray.map(function(item) { return item["key"]; });
Run Code Online (Sandbox Code Playgroud)

如果你经常这样做,你可以编写一个抽象地图的函数:

function pluck(array, key) {
  return array.map(function(item) { return item[key]; });
}
Run Code Online (Sandbox Code Playgroud)

事实上,Underscore库有一个名为pluck的内置函数,它正是这样做的.