2016-11-08 2 views
-1

Ich habe folgendes ArrayÜberprüfen Sie, ob die Liste der Array in der Anordnung von Objekten existiert

var data = ["004", "456", "333", "555"]; 

ich ein Array von Objekt wie diese auch haben.

Object {Results:Array[2]} 
Results:Array[2] 
    [0-1] 
     0:Object 
      id="004"  
      name: "Rick" 
      Active: "false" 
     1:Object 
      id="005"  
      name:'david' 
      Active: "false" 

Wie man auch sehen kann, besteht wie in Objekt in Array-ID mit 004. Ich möchte überprüfen, wie viele Elemente aus dem Array 'Daten' im Objekt 'Ergebnisse' vorhanden sind.

sollte das Endergebnis

sein, mich
data = ["004"]; 

Kann mir jemand mitteilen, wie für dieses

Antwort

1

ohne Underscore.js suchen

var data = ["004", "456", "333", "555"]; 
 
arr = [{ 
 
    id: "004", 
 
    name: "Rick", 
 
    Active: "false" 
 
}, { 
 
    id: "005", 
 
    name: 'david', 
 
    Active: "false" 
 
}]; 
 

 
out = []; 
 
for (var i = 0; i < arr.length; i++) { 
 
    for (var j = 0; j < data.length; j++) { 
 
    if (arr[i].id === data[j]) 
 
     out.push(data[j]); 
 
    } 
 
} 
 
console.log(out);

Mit Underscore.js

var data = ["004", "456", "333", "555"]; 
 
arr = [{ 
 
    id: "004", 
 
    name: "Rick", 
 
    Active: "false" 
 
}, { 
 
    id: "005", 
 
    name: 'david', 
 
    Active: "false" 
 
}]; 
 

 
out = []; 
 

 
_.each(arr, function(value1, key1, obj1) { 
 
    _.each(data, function(value, key, obj) { 
 
    if (value1.id == value) out.push(value); 
 
    }); 
 
}); 
 

 
console.log(out);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="http://underscorejs.org/underscore-min.js"></script>

+0

@ Mahi- Können Sie mich auch wissen, welche Änderungen ich machen muss, wenn ich die unerreichten Elemente von 'Daten' in 'arr' wollen –

+0

Sie wollen nur ID in Arr ?? – Mahi

+0

@ Mahi - wie oben gezeigt, wird 004 die Ausgabe sein, da dies der einzige Wert ist, der in 'arr' vorhanden ist. Ich möchte, dass die Ausgabe ['456', '333', '555'] ist, was anzeigt, dass diese Werte nicht in 'arr' vorhanden sind. irgendeine Idee, wie man das erreicht? –

0

Ich denke, den folgenden Code (nicht getestet)

l_return = []; 
for (l_cnt = 0; l_cnt < Results.length - 1; l_cnt++) { 
    if (data.indexof(Result[l_cnt].id) != -1) l_return.push(Result[l_cnt].id) 
} 
data = l_return 
+0

Vergessen Sie nicht, 'var' zu verwenden, wenn Sie wirklich Globals wollen. –

0

Dies sollte Sie geben, was Sie suchen.

var data = ["004", "456", "333", "555"]; 
 
var results = [ 
 
    { 
 
    id: "004", 
 
    name: "Rick", 
 
    Active: "false" 
 
    },{ 
 
    id: "005", 
 
    name: "david", 
 
    Active: "false" 
 
    } 
 
]; 
 

 

 
var found = []; 
 
results.forEach(i => { 
 
    if(data.includes(i.id)){ 
 
    if(!found.includes(i.id)) found.push(i.id); 
 
    } 
 
}); 
 

 
console.log(found) // ["004"]

Verwandte Themen