Tengo una matriz de objetos y objetos en los que tengo que
verifique que el code arrobj y el value obj sean iguales,
si la condición anterior está bien, verifique el tipo de identificación obj y el code idtype
es el mismo o el valor obj.idtype existe, luego devuelve la lista de matrices o devuelve []
de objeto en javascript
var arrobj = [ {id:1, code: "brown", type: "FR"}, {id:3, code: "black", type: "SP"}, {id:4, code: "blue", type: "FR"} ] var obj={ id:20, idtype: "SG", value: "blue" } Expected Output // arrobj.code and obj.value matches, obj.idtype and arraobj.type not same [] var arrobj2 = [ {id:1, code: "brown", type: "FR"}, {id:3, code: "green", type: "SP"}, {id:4, code: "blue", type: "FR"}, {id:5, code: "blue", type: "SG"} ] var obj2={ id:20, idtype: "SG", value: "blue" } Expected Output // arrobj.code and obj.value matches, obj.idtype value exists in arraobj.type [ {id:4, code: "blue", type: "FR"}, {id:5, code: "blue", type: "SG"} ]Si desea filtrar una matriz de objetos de JavaScript ( código: igual y tipo: no igual ), puede usar el método de filtro .
const sampleCars1 = [ {id: 1, code: "brown", type: "FR"}, {id: 2, code: "black", type: "SP"}, {id: 3, code: "green", type: "Y1"}, {id: 4, code: "blue", type: "FR"} ]; const sampleCars2 = [ {id: 1, code: "brown", type: "FR"}, {id: 2, code: "black", type: "X1"}, {id: 3, code: "green", type: "SP"}, {id: 4, code: "blue", type: "FR"}, {id: 5, code: "blue", type: "SG"}, {id: 6, code: "blue", type: "A1"}, {id: 7, code: "blue", type: "A2"} ]; const filterCars = (cars, desiredCode, undesiredType) => { return cars.filter(item => item.code === desiredCode && item.type !== undesiredType); } const filterSampleLists = () => { const filter = {id:20, type: "SG", code: "blue"}; const filteredSample1 = filterCars(sampleCars1, filter.code, filter.type); const filteredSample2 = filterCars(sampleCars2, filter.code, filter.type); console.log(filteredSample1); console.log(filteredSample2); } filterSampleLists();Documentación de Mozilla:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
Preguntas similares:
Encuentra objeto por id en una matriz de objetos de JavaScript
Obtenga un objeto JavaScript de una matriz de objetos por valor de propiedad
Prima:
Parece ajustarse a sus condiciones.
const arrobj1 = [{id:1, code: "brown", type: "FR"},{id:3, code: "black", type: "SP"},{id:4, code: "blue", type: "FR"}]; const obj1 = { id:20, idtype: "SG", value: "blue" }; const arrobj2 = [{id:1, code: "brown", type: "FR"},{id:3, code: "green", type: "SP"},{id:4, code: "blue", type: "FR"},{id:5, code: "blue", type: "SG"}]; const obj2 = { id:20, idtype: "SG", value: "blue" }; const advFilter = (arr, obj) => { const filtered = arr.filter(({ code }) => code === obj.value); const types = filtered.map(({ type }) => type); return types.includes(obj.idtype) ? filtered : []; }; console.log(advFilter(arrobj1, obj1)); console.log(advFilter(arrobj2, obj2)); .as-console-wrapper { max-height: 100% !important; top: 0; }