Как добавить элемент объекта в массив на основе условия

1

У меня есть константа статического массива объектов, что похоже на ниже.

export const EMPLOYEES = [
  {
    id: 2,
    name: ‘John,
  },
  {
    id: 3,
    name: ‘Doe,
  },
  {
    id: 4,
    name: ‘Bull,
  },
  {
    id: 5,
    name: ‘Scott,
  },
];

Теперь мне нужно добавить последний элемент только на основе, если какое-то условие истинно. Некоторым это нравится, если isAmerican() истинно.

Может ли кто-нибудь помочь мне здесь, как добавить элемент на основе условия? Благодарю.

  • 2
    Не могу изменить такие константы.
  • 1
    Вы не можете изменить то, на что указывает константа, но вы можете нажать на массив. Так что сделайте что-то вроде: if (isAmerican ()) {employee.push ({id: 6, name: 'Timmy'})}
Показать ещё 2 комментария
Теги:
ecmascript-6
arrays

3 ответа

1
Лучший ответ

Вы можете сделать это с помощью оператора спредов:

export const EMPLOYEES = [
    {
        id: 2,
        name: "John",
    },
    {
        id: 3,
        name: "Doe",
    },
    {
        id: 4,
        name: "Bull",
    },
    {
        id: 5,
        name: "Scott",
    },
    ... isAmerican() ? [{ id: 6, name: "Jemmy"}] : []
];
1

Если условие будет выполнено, просто нажмите объект в массив 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/

0

Вы никогда не должны изменять (или пытаться изменить) константу. Я вижу два способа сделать это:

  1. Создайте чистую функцию, чтобы вернуть новую константу с новым объектом, добавленным в массив
  2. Используйте оператор с расширением в определении константы

Вариант 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"}] : []
];

Ещё вопросы

Сообщество Overcoder
Наверх
Меню