Tengo una matriz de objetos y matrices.
Si la matriz de objetos tiene value property same
y si place incluye la list de arreglos, devuelve el primer obj
y si place es igual incluye/no incluye devuelve el primer obj
si ninguna de las condiciones anteriores devuelve indefinido; usando javascript
var list=['SG','TH','MY'] var arrobj1=[ {id:1, name:'userone',place:'SG', value:100}, {id:2, name:'usertwo',place:'TH', value:100}, {id:3, name:'userthree',place:'IL',value:200}, ] Expected Output {id:1, name:'userone',place:'SG', value:100} **** var arrobj2=[ {id:1, name:'userone',place:'IN', value: 200}, {id:2, name:'usertwo',place:'SL',value: 100}, {id:3, name:'userthree',place:'SL', value: 100}, ] Expected Output {id:2, name:'usertwo',place:'SL',value: 100} **** var arrobj3=[ {id:1, name:'userone',place:'SL', value:10}, {id:2, name:'usertwo',place:'IN', value:20}, {id:3, name:'userthree',place:'KL', value:30}, ] Expected Output undefinedIntentó
var result= arrobj.find(e=>{ if((e.value === e.value) && (list.includes(e.place)){ return e } })He agregado comentarios en línea para corresponder a los requisitos. No estaba seguro de lo que querías decir exactamente en algunos casos, así que puedo ajustar la respuesta si aclaras la pregunta.
var list = ['SG', 'TH', 'MY'] var arrobj1 = [{ id: 1, name: 'userone', place: 'SG', value: 100 }, { id: 2, name: 'usertwo', place: 'TH', value: 100 }, { id: 3, name: 'userthree', place: 'IL', value: 200 }, ] //Expected Output //{id:1, name:'userone',place:'SG', value:100} //**** var arrobj2 = [{ id: 1, name: 'userone', place: 'IN', value: 200 }, { id: 2, name: 'usertwo', place: 'SL', value: 100 }, { id: 3, name: 'userthree', place: 'SL', value: 100 }, ] //Expected Output //{id:2, name:'usertwo',place:'SL',value: 100} //**** var arrobj3 = [{ id: 1, name: 'userone', place: 'SL', value: 10 }, { id: 2, name: 'usertwo', place: 'IN', value: 20 }, { id: 3, name: 'userthree', place: 'KL', value: 30 }, ] //Expected Output //undefined function getMatch(places, arrObj) { // .find will return the first item that matches the condition provided return arrObj.find( l => list.includes(l.place) // either the place of this item must exist in the list || arrObj.filter(arr => arr.value === l.value).length > 1) // or the value of this item must appear more than once in the list } console.log(getMatch(list, arrobj1)); console.log(getMatch(list, arrobj2)); console.log(getMatch(list, arrobj3));