如何按2个不同的属性过滤?

时间:2019-06-19 18:56:45

标签: javascript arrays ecmascript-6

我正在尝试过滤对象数组,然后再将其发送到后端。它应该转到没有虚假值的后端。

如果我这样做,它将起作用:

theArray.filter(({ name }) => name)

但是我需要再添加一个属性:

theArray.filter(({ name, percentage }) => { return { percentage, name } }),

如果我像上面那样做,那行不通,我想念什么?

3 个答案:

答案 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属性,然后对其进行“真实”测试。

对于一个字符串(大概与名称类似),这意味着undefinednull和空字符串将等于false。

对于一个数字(大概是百分比),这意味着undefinednull0等于false。

在这种情况下,您可以使用以下内容(请牢记上述警告):

theArray.filter(({ name, percentage }) => percentage && name)