Как добавить элемент объекта в массив на основе условия - PullRequest
0 голосов
/ 11 октября 2018

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

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

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

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

Ответы [ 3 ]

0 голосов
/ 11 октября 2018

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

export const EMPLOYEES = [
    {
        id: 2,
        name: "John",
    },
    {
        id: 3,
        name: "Doe",
    },
    {
        id: 4,
        name: "Bull",
    },
    {
        id: 5,
        name: "Scott",
    },
    ... isAmerican() ? [{ id: 6, name: "Jemmy"}] : []
];
0 голосов
/ 11 октября 2018

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

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

Опция 1: функция Pure

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"}] : []
];
0 голосов
/ 11 октября 2018

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

Fiddle: https://jsfiddle.net/rqx35pLz/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...