#javascript
#javascript
Вопрос:
Я пытаюсь получить массив, который имеет значение в другом массиве, используя метод filter. Так, например, из этого
[[], [{name:"shop", price: 48}],[]]
к этому
[{name:"shop", price: 48}]
Из консоли.я получаю журнал ниже {name:"shop", price: 48}
, но когда я возвращаюсь v
, я получаю все обратно —> [[], [{name:"shop", price: 48}],[]]
Чего мне не хватает?
const a = [[], [{name:"shop", price: 48}],[]]
const output = a.map((value) => {
return value.filter((v) =>{
console.log(v)
return v
})
})
console.log(output);
Комментарии:
1. Ваша функция map ничего не делает, кроме клонирования вашего исходного массива, так чего же вы ожидаете?
2. Что, если несколько массивов непустые, чего вы ожидаете в этих случаях?
3. Если вы хотите отфильтровать пустые массивы, примените такой фильтр.
Ответ №1:
Вы ищете это?
const a = [[], [{name:"shop", price: 48}],[]]
const [ output ] = a.filter(v => v.length); // will filter out empty arrays
console.log(output);
Ответ №2:
Мое решение объединения подмассивов в один массив:
const a = [[], [{name:"shop", price: 12}], [{name:"shop", price: 34}]];
let res = [];
a.forEach((aItem) => res = res.concat(aItem));
console.log(res);
Вывод
[ { name: 'shop', price: 12 }, { name: 'shop', price: 34 } ]