2016-11-09 9 views
1

Angesichts der folgenden:finden Wert in Array von Objekten mit Hilfe von Javascript

var myArray = [ 
    { 
    id: "3283267", 
    innerArray: ["434","6565","343","3665"] 
    }, 
    { 
    id: "9747439", 
    innerArray: ["3434","38493","4308403840","34343"] 
    }, 
    { 
    id: "0849374", 
    innerArray: ["343434","57575","389843","38493"] 
    } 
]; 

Wie würde ich die Objekte innerhalb myArray suchen, um zu bestimmen, ob die Zeichenfolge „38493“ in der innerArray vorhanden ist, und dann Rückkehr ein neues Array mit der ID des Objekts .... wie so:

var arrayWithIds = ["9747439", "0849374"]; 
+0

eine Schleife schreiben, die 'currentElement.innerArray.indexOf ("38493")' sagen, verwendet, wenn die Zeichenfolge in dem Array und schiebt 'currentElement.id' auf das Ergebnis-Array. – Barmar

Antwort

4

Einfache Lösung mit Array.forEach und Array.indexOf Funktionen:

var search = "38493", 
    result = []; 

myArray.forEach(function(o) { 
    if (o.innerArray.indexOf(search) !== -1) this.push(o.id); 
}, result); 

console.log(result); // ["9747439", "0849374"] 
4

Sie Ihr Array filtern und dann ids Karte (mit ES6 Syntax):

const arrayWithIds = myArray 
    .filter(a => a.innerArray.includes('38493')) 
    .map(a => a.id) 

Hier ES5 Alternative ist:

var arrayWithIds = myArray 
    .filter(function(a) { 
    return ~a.innerArray.indexOf('38493'); 
    }) 
    .map(function(a) { 
    return a.id; 
    }) 
+0

Leider muss ich ES5 verwenden. – webbydevy

0

ES5 Weise können Sie auch wie folgt tun.

var myArray = [ 
 
    { 
 
    id: "3283267", 
 
    innerArray: ["434","6565","343","3665"] 
 
    }, 
 
    { 
 
    id: "9747439", 
 
    innerArray: ["3434","38493","4308403840","34343"] 
 
    }, 
 
    { 
 
    id: "0849374", 
 
    innerArray: ["343434","57575","389843","38493"] 
 
    } 
 
], 
 
searchData = "38493", 
 
    result = myArray.reduce(function(p,c){ 
 
     \t      return ~c.innerArray.indexOf(searchData) ? (p.push(c.id),p) : p; 
 
          },[]); 
 
console.log(result);

Verwandte Themen