javascript: добавление элементов в массив по условию
подскажите, как можно поэлегантнее, без кучи строчек кода с if реализовать следующую задачу:
есть массив arr, есть 2 элемента value1 и value2, которые надо добавить в начало массива, если эти элементы определены (не равны undefined)
в лоб это выглядит как-то совсем неуклюже :)
вариант 1:
if (value2 !== undefined)
arr = [value2, ...arr];
if (value1 !== undefined)
arr = [value1, ...arr];
вариант 2:
arr = (value2 !== undefined) ? [value2, ...arr] : arr;
arr = (value1 !== undefined) ? [value1, ...arr] : arr;
а есть ли какой-нибудь однострочный способ, типа
arr = [(value1 !== undefined) ? value1 : none, (value2 !== undefined) ? value2 : none, arr];
?
Ответы (2 шт):
Автор решения: Алекс Данилин
→ Ссылка
let x = ['abc', 'qwert',]
let a;
x = !!a ? [a, ...x] : x
console.log(x)
a = 'sven'
x = !!a ? [a, ...x] : x
console.log(x)
Автор решения: vsemozhebuty
→ Ссылка
(Предполагаю, что все falsy значения кроме undefined допустимы. Если нет, можно упростить условия ниже).
Можно так:
const array = ['foo'];
const a = 'bar';
const b = undefined;
array.unshift(
...(a !== undefined ? [a] : []),
...(b !== undefined ? [b] : []),
);
console.log(array);
Если нужно с перезаписью переменной, то так:
let array = ['foo'];
const a = 'bar';
const b = undefined;
array = [
...(a !== undefined ? [a] : []),
...(b !== undefined ? [b] : []),
...array
];
console.log(array);