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

时间:2017-12-20 01:47:40

标签: javascript arrays ecmascript-6

我有一个这样的数组:

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

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

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

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

我期待着这个:

[{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语句过滤数组?

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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

array.filter(x => x.id != "" && x.id != null)
// => [{"id":"1"},{"id":"2"},{"id":"3"},{"id":"4"}]