我得到的数组如下。
[{},
{},
{},
{ label: '2015', showLabels: '1,' },
{},
{},
{},
{ label: ‘2017’, showLabels: '1,' }]
但是,我想删除空索引。
我已尝试以下删除。但是,无法正常工作。
const filteredFinalYearArr = yearArray.filter(function (el) {
return el != null;
});
注意:这是动态数据
有什么建议吗?
答案 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)