从Javascript中的对象数组返回单个属性的数组

Rea*_*ues 0 javascript arrays

我正在寻找一种方法来返回Javascript中只有一个对象数组的单个属性的数组.具体来说,如果我有一个格式化为以下规范的数组结构:

[
    { prop1: "someVar", prop2: "anotherVar" }, 
    { prop1: "foo", prop2: "bar" }, 
    { prop1: "abc", prop2: "def" }
]
Run Code Online (Sandbox Code Playgroud)

我怎样才能返回一个只有prop1属性的数组?如下:

[ "someVar", "foo", "abc" ]
Run Code Online (Sandbox Code Playgroud)

我以为我可以简单地使用.filter我的原始数组上的方法,如下所示:

self.myArray.filter(function (el) {
        return el.prop1;
    });
Run Code Online (Sandbox Code Playgroud)

但这显然不起作用......想法?

Ren*_*ama 6

试试这个;

var newArray = [
    { prop1: "someVar", prop2: "anotherVar" }, 
    { prop1: "foo", prop2: "bar" }, 
    { prop1: "abc", prop2: "def" }
].map(function(item) {
    return item.prop1;
});
Run Code Online (Sandbox Code Playgroud)

如果prop1是动态的,那么你可以拥有类似的功能;

function extractProperty(array, prop) { //you may want to give it a better name
    return array.map(function(item) {
        return item[prop]; 
    });
}
Run Code Online (Sandbox Code Playgroud)

你可以像使用它一样;

var array = extractProperty([
    { prop1: "someVar", prop2: "anotherVar" }, 
    { prop1: "foo", prop2: "bar" }, 
    { prop1: "abc", prop2: "def" }
], 'prop1');
Run Code Online (Sandbox Code Playgroud)