【发布时间】:2017-09-06 22:54:25
【问题描述】:
我正在尝试(在 js 或 jquery 中)过滤对象数组并返回具有特定属性名称的对象数组。
我试过filter和find这样的函数:
var objs = [{ a:1, }, {a:2}, {a:3}, {a:4}]
var vals = [1, 2]
function callback(obj) {
var arr = arr || []
console.log(arr)
$.each(vals, function(key, val) {
if ( val == obj.a ) {
arr.push(obj)
}
})
}
var result = objs.find(callback);
console.log(">>>", result)
预期结果是:
result = [{a:1}, {a:2}]
但是它不起作用,因为find 的每次迭代都重新开始并重新定义arr。
我当然可以使用两个嵌套的$.each() - 一个迭代对象数组,第二个迭代属性值数组,但我认为这是最后一个选项 - 寻找更优雅、更短的东西。大家有什么想法吗?
【问题讨论】:
标签: arrays filter find javascript-objects