如何使用带有OR语句的ES6过滤功能

问题描述 投票:0回答:2

我有这样一个数组:

var array = [{id: "1"}, {id: "2"}, {id: ""}, {something: "else"}, {id: "3"}, {id: "4"}];

而我正在尝试使用OR语句过滤它:

array.filter(x => x.id != "" || x.id != null);

我试图通过获取ID不是空字符串的对象来过滤数组,也不是ID为null。

我期待这个:

[{id: "1"}, {id: "2"}, {id: "3"}, {id: "4"}];

我得到这个(只是相同的数组):

[{id: "1"}, {id: "2"}, {id: ""}, {something: "else"}, {id: "3"}, {id: "4"}];

var array = [{id: "1"}, {id: "2"}, {id: ""}, {something: "else"}, {id: "3"}, {id: "4"}];
var filteredArray = array.filter(x => x.id != "" || x.id != null);

console.log(filteredArray);

我究竟做错了什么?如何使用这样的OR语句过滤数组?

javascript arrays ecmascript-6
2个回答
0
投票

我真的很蠢......

我需要使用AND语句而不是OR。

array.filter(x => x.id != "" && x.id != null);

var array = [{id: "1"}, {id: "2"}, {id: ""}, {something: "else"}, {id: "3"}, {id: "4"}];
var filteredArray = array.filter(x => x.id != "" && x.id != null);

console.log(filteredArray);

0
投票

你的逻辑向后 - 你想要过滤id不是空字符串的项目AND(使用&&运算符)not null:

array.filter(x => x.id != "" && x.id != null)
// => [{"id":"1"},{"id":"2"},{"id":"3"},{"id":"4"}]
© www.soinside.com 2019 - 2024. All rights reserved.