Получить результат двух массивов одним циклом
const productItem = [1, 2, 3, 4, 5];
const newArr = [1, 4];
Мне нужно получить true, false, false, true, false одним циклом, т.е. не
productItem.forEach(i => {
newArr.forEach(n => {})
)
Ответы (3 шт):
Автор решения: Денис Лагуткин
→ Ссылка
const productItem = [1, 2, 3, 4, 5];
const newArr = [1, 4];
console.log(productItem.map(el => newArr.indexOf(el) >= 0))
Автор решения: ksa
→ Ссылка
Мне нужно получить true, false, false, true, false одним циклом
Можно сделать таким образом...
const productItem = [1, 2, 3, 4, 5];
const newArr = [1, 4];
const a = productItem.map(v => newArr.includes(v))
console.log(a)
Автор решения: ΝNL993
→ Ссылка
Как-то вот так:
const productItem = [1, 2, 3, 4, 5];
const newArr = [1, 4];
const resultArr = convertToBools(productItem, newArr)
console.log(resultArr)
function convertToBools(firstArr, secondArr) { // Объявляем функцию в конце потому, что так улучшается читаемость.
const result = []
const numbersSet = new Set(secondArr)
for (let i = 0; i < firstArr.length; i++) {
const currentNum = firstArr[i] // Не используем i, т.к. число в массиве может быть отлично от i
const bool = numbersSet.has(currentNum) // https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Set/has
result.push(bool)
}
return result
}