如何从javascript中的数组中删除空对象?

时间:2019-03-26 15:04:50

标签: javascript arrays

我得到的数组如下。

[{},
 {},
 {},
{ label: '2015', showLabels: '1,' },
 {},
 {},
 {},
{ label: ‘2017’, showLabels: '1,' }]

但是,我想删除空索引。

我已尝试以下删除。但是,无法正常工作。

const filteredFinalYearArr = yearArray.filter(function (el) {
  return el != null;
});

注意:这是动态数据

有什么建议吗?

3 个答案:

答案 0 :(得分:7)

您可以filter所有keys的数字为非零的对象:

let yearArray = [{},{},{},{label:'2015',showLabels:'1,'},{},{},{},{label:'2017',showLabels:'1,'}]

let filtered = yearArray.filter(el => Object.keys(el).length)

console.log(filtered)

答案 1 :(得分:1)

有关检查对象是否为空的最佳方法,请参见this article

const years = [
  {},
  {},
  {},
  { label: '2015', showLabels: '1,' },
  {},
  {},
  {},
  { label: '2017', showLabels: '1,' }
]

const hasValues = obj => {
  for(var key in obj) {
    if(obj.hasOwnProperty(key)) return true
  }
  return false
}

const filteredYears = years.filter(y => hasValues(y))

console.log(filteredYears)

答案 2 :(得分:0)

另一种方法是使用reduce构建数组。

const yearArray = [{},{},{},{label:'2015',showLabels:'1,'},{},{},{},{label:'2017',showLabels:'1,'}]

const filteredFinalYearArr = yearArray.reduce((o, i) => {Object.keys(i).length > 0 && o.push(i); return o}, [])

console.log(filteredFinalYearArr)