代码之家  ›  专栏  ›  技术社区  ›  Svinjica

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

  •  0
  • Svinjica  · 技术社区  · 6 年前

    是否可以使用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 回复  |  直到 6 年前
        1
  •  4
  •   Luca Kiebel    6 年前

    在你传递给的函数中 filter 或者 “汤姆”。它将返回一个包含两个匹配对象的数组。

    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)
        2
  •  1
  •   Pac0    6 年前

    filters

    你必须提供一个 true 你想要得到的元素,以及 false 为了其他人。

    函数中唯一缺少的是 || (逻辑或)代替 &&

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

    因为元素的名称可以等于Mark或Tom,但是没有元素的名称可以同时等于Mark和Tom。

        3
  •  1
  •   Dan    6 年前

    const 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'
    }];
    
    const selectedNames = ["Mark", "Tom"];
    
    const result = arr.filter(({
      name
    }) => selectedNames.includes(name));
    
    console.log(result);