在Angular 6上解析和忽略多维数组中的空数据

时间:2019-02-12 06:54:11

标签: javascript arrays angular arraylist multidimensional-array

我有多维数组,如下所示,它从我的仪表板.component.ts中的console.log(temp)显示:

[[],[],[],[],[],[],[],[],[],[],[{"user_id":"ismail.rahman.saanin@gmal.com","status":"Idle"},{"user_id":"lutfi.aldi.nugroho@gmil.com","status":"Overload"}]]

基本上,这种数组(内部包含空数组)很少见。但这令我不安,我无法解析数据。

我的Dashboard.component.ts

this.scheduleService.getShiftSchedule().subscribe((temp)=>{
  this.api = temp;
//console.log(temp);
  var ids = [['user_id', 1], ['status', 2]],
  result = Object.keys(temp).map(o => ids.map(([key, id]) => ({ id, content: temp[o][key] })));
  this.tablePresetData = result;
})

我的问题是,如果像我这种情况,多维数组中是否存在条件空数组,如何过滤数据?

需要帮助,谢谢...

2 个答案:

答案 0 :(得分:0)

您可以检查length是否大于0

let arr = [[],[],[],[],[],[],[],[],[],[],[{"user_id":"ismail.rahman.saanin@gmal.com","status":"Idle"},{"user_id":"lutfi.aldi.nugroho@gmil.com","status":"Overload"}]];
arr = arr.filter(item => Array.isArray(item) && item.length > 0)
console.log(arr);

答案 1 :(得分:0)

您可以使用.filter()并返回元素.length,其中0的计算结果为假

let [res] = array.filter(({length}) => length)

或使用.flat()

let res = array.flat()