我正在尝试过滤对象数组,然后再将其发送到后端。它应该转到没有虚假值的后端。
如果我这样做,它将起作用:
theArray.filter(({ name }) => name)
但是我需要再添加一个属性:
theArray.filter(({ name, percentage }) => { return { percentage, name } }),
如果我像上面那样做,那行不通,我想念什么?
答案 0 :(得分:3)
您的过滤器函数应返回一个布尔值,该布尔值确定是否保留数组元素:
theArray.filter(({name, percentage}) => {return name && percentage});
或者只是
theArray.filter(({name, percentage}) => name && percentage);
答案 1 :(得分:2)
您可以采用这些值并使用logical AND &&
(无falsy个值)
theArray.filter(({ name, percentage }) => name && percentage)
或logical OR ||
(一个或两个值均为truthy)。
theArray.filter(({ name, percentage }) => name || percentage)
答案 2 :(得分:1)
因此,您当前正在做的是从数组中的每个对象中提取name属性,然后对其进行“真实”测试。
对于一个字符串(大概与名称类似),这意味着undefined
,null
和空字符串将等于false。
对于一个数字(大概是百分比),这意味着undefined
,null
和0
等于false。
在这种情况下,您可以使用以下内容(请牢记上述警告):
theArray.filter(({ name, percentage }) => percentage && name)