2016-05-24 10 views

Antwort

2

I Array.prototype.every nicht für die Aufgabe der Ausfiltern der identischen _id s verwenden würde, so dass nicht die vorgesehene Funktion ist.

Stattdessen schlage ich vor, Sie verwenden, um die Array.prototype.filter Methode, zusammen mit Array.prototype.map, wie unten dargestellt:

const obj1 = {"Array1":[ 
 
    { "_id": "1234"}, 
 
    { "_id": "5678"}, 
 
    { "_id": "3456"} ]}; 
 

 
const obj2 = {"Array2":[ 
 
    { "_id": "1234"}, 
 
    { "_id": "5678"} ]}; 
 

 

 
console.log(obj1.Array1.filter(a1 => obj2.Array2.map(a2 => a2._id).indexOf(a1._id) < 0));

ES5:

var obj1 = {"Array1":[ 
 
    { "_id": "1234"}, 
 
    { "_id": "5678"}, 
 
    { "_id": "3456"} ]}; 
 

 
var obj2 = {"Array2":[ 
 
    { "_id": "1234"}, 
 
    { "_id": "5678"} ]}; 
 

 

 
console.log(obj1.Array1.filter(function (a1) { 
 
    return obj2.Array2.map(function (a2) { 
 
    return a2._id; 
 
    }).indexOf(a1._id) < 0; 
 
}));

+0

Genau das, was ich suche, aber ich bekomme Syntaxfehler mit den Lambda-Ausdrücken auf meiner node.js Seite. –

+0

@RudolfLamprecht verwenden Sie Knoten v6.x? Der obige Code sollte gut funktionieren, da die Abdeckung von ES6 jetzt wirklich gut ist. – timolawl

+0

@RudolfLamprecht Ich habe eine ES5-Version hinzugefügt. Sollte keine Probleme damit haben. – timolawl

Verwandte Themen