2016-07-19 5 views
-3

Ich möchte gegen ein Array mit einem Feld namens name überprüfen und überprüfen, ob ein Objekt.name in "arraryCollection" in "People Array" existiert, wenn nicht vorhanden es wird Push „arraryCollection [n] .name. so etwas Ähnliches.

$.each(arrayCollection, function(i, el) {  
    if ($.inArray(el.name, people.name) === -1) { 
     people.push({name: el.name);         
    }) 
}) 

jedoch habe ich nicht people.name verwenden kann, da es nicht definiert ist, und unten ist, was ich getan um zu arbeiten , aber gibt es eine Möglichkeit, people.name direkt anzurufen?

var tempList=[]; 
var people=[]; 
$.each(arrayCollection, function(i, el) {  
     if ($.inArray(el.name, tempList) === -1) { 
      tempList.push(el.name);         
     }) 
    }) 
$.each(tempList, function(i, tl) { 
    people.push({name: tl}) 
}) 

Mit anderen Worten, wie rufe ich ganze Sammlung von Array-Feld direkt wie people.name anstelle von einzelnen Personen [n] .name, die nur 1 Ergebnis zurückgibt.

+0

Hier stimmt etwas nicht. Wenn 'people.name' existiert, dann ist' people' ein Objekt und Sie können nicht zu 'people' wechseln, da es sich um ein Objekt, nicht um ein Array handelt. Brauchen Sie mehr Details über die Personenstruktur. Siehe [mcve] – charlietfl

+0

people ist ein Array, das ungefähr so ​​aussieht wie 'people = [{name:" abc "}, {name:" efg "}]' also 'people [0] .name' ist' abc' – nicker

+0

Sie haben Durchlaufen des Arrays, um die Namenseigenschaft jedes Objekts zu vergleichen. – charlietfl

Antwort

0

prüfen InArray wie folgt aus:

inArray gibt den Index des Elements in dem Array, kein boolean angibt, ob das Element im Array vorhanden ist. Wenn das Element nicht gefunden wurde, wird -1 zurückgegeben.

// it will check if ABC is there in array `people.name` 
if($.inArray("ABC", people.name) !== -1) { 
    people.push({name: "testing"});         
} 
+0

bitte fügen Sie einige Erklärung hinzu :)) –

+1

@GeorgeGarchagudashvili ich bearbeite schon meinen Beitrag für Erklärungen :) –

+0

Mein Problem ist eigentlich people.name, man kann nicht einfach people.name so nennen, dass es unbestimmt zurückkommt, wie es sich gehört sei Leute [n] .name. – nicker

0

Die $.inArray() Methode ähnelt JavaScript native .indexOf() Methode, dass sie -1 zurück, wenn es keine Übereinstimmung finden. Wenn das erste Element innerhalb des Array-Wert übereinstimmt, $.inArray() kehrt 0.

var testArr= [ 4, "ABC", 8, "John" ]; 


if($.inArray("ABC", testArr) > -1) 
{ 
    console.log('Horray'); 
} 

Wenn Sie ein js Objekt, das einen Schlüssel ‚name‘ hat ein Array als Wert enthält, dann können Sie es verwenden, wie Sie sagten in Ihrem Frage:

var obj= {"name":[ 4, "ABC", 8, "John" ]}; 


if($.inArray("ABC", obj.name) > -1) 
{ 
    console.log('Horray'); 
} 

Die push() Methode fügt ein neues Element in ein Array und kein Objekt, stellen sie sicher, dass es mit Arrays nur zu verwenden.

Verwandte Themen