如何使用Javascript过滤方法返回多个结果?

时间:2018-08-21 15:11:59

标签: javascript arrays

关于过滤方法的一个快速问题。 是否可以使用JavaScript过滤器方法返回多个值 因此,我想知道是否可以像这样循环遍历json并过滤值...

var arr = [{
    name: 'John',
    email: 'johnson@mail.com',
    age: 25,
    address: 'USA'
  },
  {
    name: 'Tom',
    email: 'tom@mail.com',
    age: 35,
    address: 'England'
  },
  {
    name: 'Mark',
    email: 'mark@mail.com',
    age: 28,
    address: 'England'
  }
];

// filter array by name Mark and Tom
const result = arr.filter(function (el) {
    return el.name === 'Mark' && el.name ==='Tom';
});

最终结果将是这样:

  [Object { name: "Mark", email: "mark@mail.com", age: 28, address: "England" },{ name: "Tom", email: "tom@mail.com", age: 35, address: "England" }]

是否可能发生这种情况?如果没有,最好的方法/方法是什么?

3 个答案:

答案 0 :(得分:4)

在传递给filter的函数中,您要检查名称是否等于“ Mark” OR “ Tom”。这将返回一个数组,其中包含两个匹配的对象。

var arr=[{name:'John',email:'johnson@mail.com',age:25,address:'USA'},{name:'Tom',email:'tom@mail.com',age:35,address:'England'},{name:'Mark',email:'mark@mail.com',age:28,address:'England'}]

// filter array by name Mark and Tom
const result = arr.filter(function (el) {
    return el.name === 'Mark' || el.name === 'Tom';
});

console.log(result)

答案 1 :(得分:1)

filters接受一个数组,并返回匹配某个条件的元素的子集数组。

您必须为要获取的元素提供true的功能,为其他元素提供false的功能。

函数中唯一缺少的事情是您需要使用||(逻辑或)而不是&&(和)

const result = arr.filter(function (el) {
    return el.name === 'Mark' || el.name === 'Tom';
});

因为一个元素的名称可以等于Mark OR Tom,但是没有一个元素的名称同时等于Mark AND Tom。

答案 2 :(得分:1)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:background="#0c2003">
</LinearLayout>