2017-10-20 5 views
0

J'ai ce tableau:Trouver tableau dans un autre tableau et d'obtenir l'indice de résultat

var arr = [ 
{attributes: [{name: "Impregnante", slug: "impregnante", option: "Nessuno"}, {name: "Tegole", slug: "tegole", option: "Senza Tegole"}], id:430, price:"1000"}, 
{attributes: [{name: "Impregnante", slug: "impregnante", option: "Nessuno"}, {name: "Tegole", slug: "tegole", option: "Rossi"}], id:431, price:"1025"}, 
{attributes: [{name: "Impregnante", slug: "impregnante", option: "Nessuno"}, {name: "Tegole", slug: "tegole", option: "Verdi"}], id:432, price:"1025"}, 
{attributes: [{name: "Impregnante", slug: "impregnante", option: "Trasparente"}, {name: "Tegole", slug: "tegole", option: "Senza Tegole"}], id:433, price:"1100"}, 
{attributes: [{name: "Impregnante", slug: "impregnante", option: "Trasparente"}, {name: "Tegole", slug: "tegole", option: "Rossi"}], id:434, price:"1125"}, 
{attributes: [{name: "Impregnante", slug: "impregnante", option: "Trasparente"}, {name: "Tegole", slug: "tegole", option: "Verdi"}], id:435, price:"1125"}, 
{attributes: [{name: "Impregnante", slug: "impregnante", option: "Noce"}, {name: "Tegole", slug: "tegole", option: "Senza Tegole"}], id:436, price:"1100"}, 
{attributes: [{name: "Impregnante", slug: "impregnante", option: "Noce"}, {name: "Tegole", slug: "tegole", option: "Rossi"}], id:437, price:"1125"}, 
{attributes: [{name: "Impregnante", slug: "impregnante", option: "Noce"}, {name: "Tegole", slug: "tegole", option: "Verdi"}], id:438, price:"1125"}, 
{attributes: [{name: "Impregnante", slug: "impregnante", option: "Castagno"}, {name: "Tegole", slug: "tegole", option: "Senza Tegole"}], id:439, price:"1100"}, 
{attributes: [{name: "Impregnante", slug: "impregnante", option: "Castagno"}, {name: "Tegole", slug: "tegole", option: "Rossi"}], id:440, price:"1125"}, 
{attributes: [{name: "Impregnante", slug: "impregnante", option: "Castagno"}, {name: "Tegole", slug: "tegole", option: "Verdi"}], id:441, price:"1125"}] 

Et un autre tableau:

var obj = [{name: "Impregnante", slug: "impregnante", option: "Trasparente"}, {name: "Tegole", slug: "tegole", option: "Rossi"}]; 

Quelqu'un peut-il me donner un conseil, comment trouver le obj dans arr et retourne l'id où obj était ... Merci d'avance et donc désolé pour la langue !!!

Répondre

0

Essayez suivante:

const parseData = (arr, obj) => { 
    let found = arr.find(a => JSON.stringify(a.attributes) === JSON.stringify(obj)); 
    return found ? found.id : null; 
} 

console.log(parseData(arr, obj)); //434 

Pour fournir des objets comparaison peu profonde je JSON.stringify(). Cette approche nécessite un ordre strict des attributs des objets impliqués dans l'opération. Vous pouvez implémenter une telle comparaison d'une autre manière, si cette exigence n'est pas acceptable.

+0

Thx, son fonctionnement sympa, mais, et si j'ai ce tableau comme var obj2 = [{option: "Trasparente"}, {option: "Rossi"}] –

+0

Juste faire une comparaison stricte: 'let found = arr .find (a => a.attributes [0] .option === obj [0] .option && a.attributes [1] .option === obj [1] .option); '- dépend de votre besoin , le comparateur peut être personnalisé de cent façons – dhilt

+0

Thx, la solution était simplement, mais je suis si novice dans ce langage de programmation. Merci encore! –

1

Je pense que cela peut vous aider:

Obtenez l'objet:

var arrFilter = arr.filter(function(a, b){ return JSON.stringify(a.attributes) == JSON.stringify(obj) }); 

// if you need the property ID 
arrFilter[0].id 

Obtenez l'index:

var idx = arr.findIndex(function(a, b){ return JSON.stringify(a.attributes) == JSON.stringify(obj) }) 

Si vous voulez, vous pouvez utiliser les fonctions fléchées (expressions Lambda) .