我有一个以下形式的javascript对象:
{ url1: {status: "ok", updatedAt: someDate1},
url2: {status: "error", updatedAt: someDate2},
url3: {status: "error", updatedAt: someDate3},
...
}
我想创建一个新对象,其中包含“status”属性为“error”的所有元素 在上面的示例中,我希望创建以下对象:
{ url2: {status: "error", updatedAt: someDate2},
url3: {status: "error", updatedAt: someDate3}
}
答案 0 :(得分:4)
迭代所有属性并复制匹配的对象?
function filterByProperty(obj, predicate) {
var selected={};
for (p in obj) {
if (obj.hasOwnProperty(p) && predicate(obj[p])) {
selected[p] = obj[p];
}
}
return selected;
}
使用
致电filterByProperty(object, function(o) {o.status === "error";});
我喜欢将函数作为参数传递......
答案 1 :(得分:3)
这应该做你需要的(o
是你的原始对象):
var errorObj = {};
for (k in o){
var v = o[k];
if (v.status === 'error'){
errorObj[k] = v;
}
}