javascript对象操作:根据指定的条件选择属性

时间:2012-09-12 12:24:28

标签: javascript object

我有一个以下形式的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} 
  }

2 个答案:

答案 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;
    }
}
相关问题