如何知道数组是否包含具有某个“键”的对象?

时间:2018-06-10 07:48:20

标签: javascript loops javascript-objects

假设我有这样的数据结构,其中我有一个包含一组对象的数组,对象是'月'。

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

现在我想知道,如果一个带有'sep2018'键的对象已存在于此数组中。如果还没有,那么我将在最后一个之后添加一个带有'sep2018'键的新对象。如果是,那么我什么都不做。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

您可以使用.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);

答案 1 :(得分:1)

要进行更新或检查,您可以使用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'));