返回对象数组的所有匹配元素?

Mor*_*lst 18 javascript

我有一个由具有两个属性的对象组成的数组.

一个属性"value"是1到6之间的数字.另一个属性"id"是1到200之间的数字.

如何返回"value"= 1的所有对象的"id"属性并将它们写入新数组?

jAn*_*ndy 32

你应该在Array.prototype.filter那里调用函数.

var filteredArray = YourArray.filter(function( obj ) {
    return obj.value === 1;
});
Run Code Online (Sandbox Code Playgroud)

.filter()要求您返回所需的条件.它将根据过滤结果创建一个新数组.如果您还想对已过滤的操作进行操作Array,则可以调用更多方法,例如在您的实例中.map()

var filteredArray = YourArray.filter(function( obj ) {
    return obj.value === 1;
}).map(function( obj ) {
    return obj.id;
});

console.log( filteredArrays ); // a list of ids
Run Code Online (Sandbox Code Playgroud)

......在不久的将来,我们最终可以使用ES6 的Arrow功能,这使得这个代码更加美观:

var filteredArray = YourArray.filter( obj => obj.value === 1 ).map( obj => obj.id );
Run Code Online (Sandbox Code Playgroud)