Как узнать, содержит ли массив объект с определенным «ключом»? - PullRequest
0 голосов
/ 10 июня 2018

Допустим, у меня есть эта структура данных, в которой у меня есть массив, содержащий набор объектов, которые являются «месяцами».

monthlySum: [
  {
              jun2018: {
                sales: 0,
                expenses: 0
              } 
            },
            {
              aug2018: {
                sales: 0,
                expenses: 0
              } 
            }
          ]

Теперь я хотел бы знать, скажем, еслиобъект с ключом 'sep2018' уже существует в этом массиве.Если еще нет, то я добавлю новый объект с ключом 'sep2018' после последнего.Если да, то я ничего не буду делать.

Как мне это сделать?


Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Для обновления или проверки вы можете использовать Array#find, который возвращает либо элемент, либо undefined, если не найден.

function find(array, key) {
    return array.find(object => key in object);
}

var monthlySum = [{ jun2018: { sales: 0, expenses: 0 } }, { aug2018: { sales: 0, expenses: 0 } }];

console.log(find(monthlySum, 'aug2018'));
console.log(find(monthlySum, 'dec2018'));
0 голосов
/ 10 июня 2018

Вы можете использовать .some, чтобы проверить, проходит ли что-либо в массиве определенный тест:

const monthlySum = [{
    jun2018: {
      sales: 0,
      expenses: 0
    }
  },
  {
    aug2018: {
      sales: 0,
      expenses: 0
    }
  }
];

if (!monthlySum.some((obj) => 'aug2018' in obj)) {
  monthlySum.push({
    aug2018: {
      sales: 0,
      expenses: 0
    }
  })
}
if (!monthlySum.some((obj) => 'sep2018' in obj)) {
  monthlySum.push({
    sep2018: {
      sales: 0,
      expenses: 0
    }
  })
}
console.log(monthlySum);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...