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

javascript object manipulation: select properties according to specified condition

本文关键字:条件 选择 属性 对象 操作 javascript      更新时间:2023-09-26

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

遍历所有属性并复制匹配的对象?

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";});

我喜欢将函数作为参数传递。。。

这应该可以满足您的需要(o是您的原始对象):

var errorObj = {};
for (k in o){
    var v = o[k];
    if (v.status === 'error'){
        errorObj[k] = v;
    }
}