[英]Remove all but 2 objects from array with specific property
我想從一個基於屬性的數組中刪除對象,但想保存其中兩個
var arr = [{"name": "John", "class": "warrior"},
{"name": "Jane", "class": "mage"},
{"name": "Doug", "class": "monk"},
{"name": "Danna", "class": "warrior"}, ..]
var new_arr = arr.filter(function(el) { return el.class !== "warrior"; });
// new_arr == [{"name": "Jane", "class": "mage"},
// {"name": "Doug", "class": "monk"}, ...]
如果我要刪除或保留特定數量的這些對象,該如何做-例如刪除除兩個對象之外的所有其他class == "warrior"
如果您不介意刪除哪些過濾器,則可以跳過過濾器中前兩個戰士返回false
的操作。 您只需要一個變量來跟蹤您已經匹配了多少個戰士,並在找到一個戰士時增加它:
因此,對於John和丹納, matched
將分別等保持在陣列中是1和2:
var arr = [
{ "name": "John", "class": "warrior" },
{ "name": "Jane", "class": "mage" },
{ "name": "Doug", "class": "monk" },
{ "name": "Danna", "class": "warrior"},
{ "name": "Bob", "class": "warrior" },
{ "name": "Someone", "class": "mage" },
{ "name": "Bob2", "class": "warrior" },
{ "name": "Bob3", "class": "warrior" },
{ "name": "Bob4", "class": "warrior" }
];
var matched = 0;
var new_arr = arr.filter(function (el) {
return (el.class !== "warrior" || ++matched <= 2);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.