Reputation: 101
In my case, the search should go through the first [1]
elements of nested arrays.
I added a loop through the array elements from the answer, but I can't add the found arrays to the array.
function massivs() {
let array = [['a', 'mango', 'b','c'], ['d', 'applemango', 'e','f'],['k', 'mangoapple', 's','r']];
let comp = ['apple', 'mango'];
let ans = [];
for (let i = 0; i < array.length; i++) {
for (el of array[i]) {
if (comp.every(y => el.includes(y))) {
ans.push(el);
}
}
}
console.log(ans);
}
massivs();
[ 'applemango', 'mangoapple' ]
Expected Result [['d', 'applemango', 'e','f'],['k', 'mangoapple', 's','r']]
Upvotes: 3
Views: 194
Reputation: 31805
You could do it with just one line of code:
const array = [['a', 'mango', 'b','c'], ['d', 'applemango', 'e','f'],['k', 'mangoapple', 's','r']];
const comp = ['apple', 'mango'];
const result = array.filter(x => comp.every(y => x.some(z => z.includes(y))));
console.log(result);
Upvotes: 2
Reputation: 5500
you are pushing the elements of the inner arrays to the answer, hence you only get the elements, if you want the parent array added then you have to push that
for (sub of array) {
for (el of sub) {
if (comp.every(y => el.includes(y))) {
ans.push(sub);
}
}
}
Upvotes: 0
Reputation: 10765
for of
iterates the items of your array, so it's only pushing the element of the array that is included in your search values, push the whole array if found in search and break the loop
function massivs() {
let array = [['a', 'mango', 'b','c'], ['d', 'applemango', 'e','f'],['k', 'mangoapple', 's','r']];
let comp = ['apple', 'mango'];
let ans = [];
for (let i = 0; i < array.length; i++) {
for (el of array[i]) {
if (comp.every(y => el.includes(y))) {
ans.push(array[i]);
break;
}
}
}
console.log(ans);
}
massivs();
Upvotes: 1