/ / Vytvárate podmnožinu súboru objektov JavaScript na základe jednej z ich vlastností? - javascript, polia, objekt

Tvorba podmnožinu pole JavaScript objekty založené na jednom z ich vlastnosti?-javascript, polia, objekt

Mám celý rad objektov JavaScriptu s rovnakými vlastnosťami, niečo podobné:

box[0] = { name: "somename", /* more properties... */ };
box[1] = { name: "othername", /* more properties... */ };
box[2] = { name: "onemorename", /* more properties... */ };
// more objects in the array...

Chcem podmnožinu tohto poľa tak, aby obsahoval iba objekty, ktoré sa zhodujú s písmenom a "List" mien a skopírujte tie, ktoré sa nenachádzajú v inom pomenovanom poli cache možno. Myslel som, že by som mohol porovnať toto pole objektov s iným poľom, ktoré obsahuje iba zoznam reťazcov s požadovanými názvami, ktoré sa majú zhodovať, a skontrolovať vlastnosť názvu každého objektu oproti tomuto zoznamu a vytvoriť nové pole s tými, ktoré sa zhodujú. Neviem, či by to fungovalo, alebo či je to najlepší prístup k dosiahnutiu toho, čo chcem, a preto vás žiadam o pomoc. Možno, že kontrola každého z 200 - 500 objektov oproti zoznamu so 100 názvami nie je veľmi dobrá vec, ktorú neviem.

Máte nejaké nápady, ako by som to mohol urobiť? ešte lepšie, môžete ma ukázať na príklad?

Vopred ďakujem.

odpovede:

0 pre odpoveď č. 1

Za predpokladu, že zoznam požadovaných mien je uložený v poli,

var wantedNames = [ "first name", "second name", .. ];

majú dve polia - tie, ktoré zodpovedajú názvu a tie, ktoré „t.“ Slučka prechádza každou položkou v objekte boxu, a ak obsahuje názov zo zoznamu, potom ho zahrnie.

var objectsMatchingName = box.filter(function(item) {
return wantedNames.indexOf(item.name) !== -1;
});

var cache = box.filter(function(item) {
return objectsMatchingName.indexOf(item) === -1;
});

Prial by som si, aby existovala nejaká operácia rozdielu polí, takže by ste to mohli urobiť (v pseudokódu):

var cache = box - objectsMatchingName