Home > OS >  nodejs filter array in a multimendiosnal matrix
nodejs filter array in a multimendiosnal matrix

Time:05-31

Trying to retrieve the internal array (tags) from the following structure: Multidimensional array

"tags" array contains the tag with "function" values, to get this I use the following expression:

let func = parsed.filter(x => x.tags.filter(x => x.tag == "function"));

being parsed the structure, but the result is:

result

It is including an array that doesn't contain "function" value in the "tag" property. How can I get only the arrays that contain "function" values in the "tag" property?

CodePudding user response:

Your problem is that the inner filter x.tags.filter(x => x.tag == "function") returns empty array [] which is truthy value even when it does not find any tag function.

You need to make sure tu return true/false or at least correct truthy/falsy value.

Simple fix, just add .length:

let func = parsed.filter(x => x.tags.filter(x => x.tag == "function").length);

Zero 0 is falsy value and anything greater than 0 like 1 etc. is truthy

Test:

var arr = [
  { tags: [{ tag: 'function' }]},
  { tags: [{ tag: 'function2' }]}
].filter(x => x.tags.filter(x => x.tag == "function").length);
// arr is [{ tags: [{ tag: 'function' }]}]
console.log(arr);

  • Related