0

次の形式の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} 
  }
4

2 に答える 2

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

関数を引数として渡すのが大好きです...

于 2012-09-12T12:32:54.797 に答える
3

これはあなたが必要とすることをするはずです(oあなたの元のオブジェクトです):

var errorObj = {};
for (k in o){
    var v = o[k];
    if (v.status === 'error'){
        errorObj[k] = v;
    }
}
于 2012-09-12T12:27:33.460 に答える