2016-11-16 3 views
0

Ich habe dieses Array von Objekt in Javascript.Entfernen Sie Objekte aus diesem Array von Objekt, wenn bestimmte Kriterien erfüllt sind

var array = [ { DATA_ID: 1, 
    DATA_NAME: 'XX', 
    DATA_GROUP: 2313, 
    CODE_NO: 1 }, 
    { DATA_ID: 6, 
    DATA_NAME: 'YY', 
    DATA_GROUP: 4213, 
    CODE_NO: 2 }, 
    { DATA_ID: 4, 
    DATA_NAME: 'ZZ', 
    DATA_GROUP: 2123, 
    CODE_NO: 3 }, 
    { DATA_ID: 8, 
    DATA_NAME: 'ZZ', 
    DATA_GROUP: 2123, 
    CODE_NO: 3 } ] 

Ich möchte Objekte aus dem Array von Objekten entfernen, wenn die Eigenschaft CODE_NO === 3.

Das Ergebnis sieht wie folgt aus;

[ { DATA_ID: 1, 
    DATA_NAME: 'XX', 
    DATA_GROUP: 2313, 
    CODE_NO: 1 }, 
    { DATA_ID: 6, 
    DATA_NAME: 'YY', 
    DATA_GROUP: 4213, 
    CODE_NO: 2 } 
] 

Ich bin mit node.js

v6
+1

Zeigen Sie uns einen Code, wo Sie das versucht haben? – aring

+1

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter – Satpal

Antwort

1

Sie können array.filter einfache Java-Script-Manipulation tun:

var arr = [ { DATA_ID: 1, 
 
    DATA_NAME: 'XX', 
 
    DATA_GROUP: 2313, 
 
    CODE_NO: 1 }, 
 
    { DATA_ID: 6, 
 
    DATA_NAME: 'YY', 
 
    DATA_GROUP: 4213, 
 
    CODE_NO: 2 }, 
 
    { DATA_ID: 4, 
 
    DATA_NAME: 'ZZ', 
 
    DATA_GROUP: 2123, 
 
    CODE_NO: 3 }, 
 
    { DATA_ID: 8, 
 
    DATA_NAME: 'ZZ', 
 
    DATA_GROUP: 2123, 
 
    CODE_NO: 3 } ] 
 

 
var res =arr.filter(function(elem){ 
 

 
    if (elem.CODE_NO != 3) 
 
    return elem 
 
}) 
 
console.log(res)

+1

Eleganter Code! Ich habe einen langatmigen Code geschrieben, bis ich deine Antwort sah. Brillant! Upvoted. – user781486

1

** verwenden: **

let array = 
    [ { DATA_ID: 1, 
     DATA_NAME: 'XX', 
     DATA_GROUP: 2313, 
     CODE_NO: 1 }, 
     { DATA_ID: 6, 
     DATA_NAME: 'YY', 
     DATA_GROUP: 4213, 
     CODE_NO: 2 }, 
     { DATA_ID: 4, 
     DATA_NAME: 'ZZ', 
     DATA_GROUP: 2123, 
     CODE_NO: 3 }, 
     { DATA_ID: 8, 
     DATA_NAME: 'ZZ', 
     DATA_GROUP: 2123, 
     CODE_NO: 3 } ]; 

     for (var key in array){ 
      if(array[key].CODE_NO==3){ 
      delete array[key]; 
      } 
     } 
1

Ich werde eine "alternative" Lösung veröffentlichen, wenn es schon eine Abhängigkeit von Ramda-Projekten gibt. @asdf_enel_hak Beispiel ist große Geldbörse JS, wenn Sie also keine zusätzlichen Deps benötigen, verwenden Sie dieses Beispiel.

Ramda basierte Lösung:

// complement is like logical not, if value is true returns false and on true returns false 
// it does not return boolean value but new function 
const codeIsNot3 = R.complement(
    R.propEq("CODE_NO", 3) // Property based equal check, without R.complement it would return all objects where code_no is 3 
); 
R.filter(codeIsNot3, arr); 
+0

Funktionale Programmierung sieht gut aus. Aber ich werde etwas Zeit brauchen, um den Code zu verstehen. Der Code ist kurz, aber für Leute wie mich nicht einfach zu verstehen. – user781486

+1

Das stimmt, fügte weitere Kommentare zu den Funktionen hinzu, auch ramda docs ist ein großartiger Ort, um weiter zu gehen. –

0

Dieser Code funktioniert. Der Trick liegt darin, das Objekt mit array.splice(i,1) zu entfernen.

for (let i=0;i< array.length; i++ ){ 
     if (array[key].CODE_NO===3){    
     array.splice(i,1); 
     } 
    } 

array ist das Array in Ihrer Frage geschrieben.

Verwandte Themen