У меня есть константа статического массива объектов, что похоже на ниже.
export const EMPLOYEES = [
{
id: 2,
name: ‘John,
},
{
id: 3,
name: ‘Doe,
},
{
id: 4,
name: ‘Bull,
},
{
id: 5,
name: ‘Scott,
},
];
Теперь мне нужно добавить последний элемент только на основе, если какое-то условие истинно. Некоторым это нравится, если isAmerican()
истинно.
Может ли кто-нибудь помочь мне здесь, как добавить элемент на основе условия? Благодарю.
Вы можете сделать это с помощью оператора спредов:
export const EMPLOYEES = [
{
id: 2,
name: "John",
},
{
id: 3,
name: "Doe",
},
{
id: 4,
name: "Bull",
},
{
id: 5,
name: "Scott",
},
... isAmerican() ? [{ id: 6, name: "Jemmy"}] : []
];
Если условие будет выполнено, просто нажмите объект в массив EMPLOYEES:
let isAmerican = true;
const EMPLOYEES = [
{
id: 2,
name: "John",
},
{
id: 3,
name: "Doe",
},
{
id: 4,
name: "Bull",
},
{
id: 5,
name: "Scott",
},
];
if(isAmerican) {
EMPLOYEES.push({
id: 6,
name: "Frank"
})
}
console.log(EMPLOYEES)
Скрипт: https://jsfiddle.net/rqx35pLz/
Вы никогда не должны изменять (или пытаться изменить) константу. Я вижу два способа сделать это:
Вариант 1: Чистая функция
function makeNewArray(array, objectToAppend, isAmerican) {
return isAmerican ? [...array, objectToAppend] : array
}
const EMPLOYEES = [
{
id: 2,
name: "John",
},
{
id: 3,
name: "Doe",
},
{
id: 4,
name: "Bull",
},
{
id: 5,
name: "Scott",
}
];
const arrayWithAmerican = makeNewArray(EMPLOYEES, { id: 6, name: "American Frank"}, true);
const arrayWithoutAmerican = makeNewArray(EMPLOYEES, { id: 6, name: "Not American Frank"}, false);
console.log(arrayWithAmerican);
console.log(arrayWithoutAmerican);
Вариант 2: Оператор распространения
function isAmerican(){
// generic code here.
return true;
}
const EMPLOYEES = [
{
id: 2,
name: "John",
},
{
id: 3,
name: "Doe",
},
{
id: 4,
name: "Bull",
},
{
id: 5,
name: "Scott",
},
... isAmerican() ? [{ id: 6, name: "American Frank"}] : []
];