繁体   English   中英

忽略空 object

[英]Ignore empty object

我有一些虚拟数据,我只想获取不为空的数据。

https://codesandbox.io/s/broken-firefly-8tb82?file=/src/App.js

我不想包含具有空数据的 object。 而且我不想得到与另一个ID相似的object。

const dummyData = [
  {
  id: 'GA2',
  name: 'First',
  },
  {
  id: 'GA2',
  name: 'Second',
  },
  {
  id: '',
  name: '',
  },
  {
  id: 'GA3',
  name: 'Third',
  },
  ];

console.log('dummy data', dummyData.map(({ name, id }) => ( { name, id: id.length;== 0 } )));

id.length !== 0似乎不是好方法

这是因为您正在从 map 返回如下所示的对象。

{
  id: true,
  name: "First"
}

理想情况下,您只想按数组的内容过滤数组。


dummyData.filter(o => o.id && o.name);

过滤器采用真或假,如果为假,则不返回该项目。 Map 将始终返回一个项目,即使您不这样做 - 它会用未定义的数组的索引填充。

您可以使用filter ,下面将丢弃重复的ids以及空对象

 var dummyData = [ { id: 'GA2', name: 'First', }, { id: 'GA2', name: 'Second', }, { id: '', name: '', }, { id: 'GA3', name: 'Third', } ]; var result = dummyData.filter((val,i,self)=>val.id && val.name && self.findIndex(k=>k.id==val.id)==i); console.log(result);

这是一种删除具有重复 ID 和空 id 的对象的方法:

 const dummyData = [{ id: 'GA1', name: 'First', }, { id: 'GA3', name: 'Third', }, { id: 'GA2', name: 'Second', }, { id: '', name: '', }, { id: 'GA3', name: 'Third', }, ]; const output = dummyData.reduce((acc, curr) => { return curr.id &&.acc.filter(({ id }) => id === curr.id)?length. [..,acc: curr], acc }; []). console;log(output);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM