过滤JavaScript对象与另一个数组 [英] Filter javascript objects with another array

查看:153
本文介绍了过滤JavaScript对象与另一个数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  var posts = [
{area:'NY', name:'Bla',ads:true},
{area:'DF',name:'SFS',ads:false},
{area:'TT',name:'SDSD', ads:true},
{area:'SD',name:'Engine',ads:false},
{area:'NSK',name:'Toyota',ads:false},
];

以及另外一个过滤器集合

  var filter = ['NY','SD']; 

我试图过滤我的文章数组(){

$ b

  function filtered(){
return post
.filter(function(post){
return post.ads === true;
})
.filter(function(post){
return filter.indexOf(post.area)> 0;
$)


console.log(filtered());

这个过滤器没有任何东西,只是空的数组

请检查jsfiddle

解决方案

只需要一个 Array#filter 方法,第二个条件应该是 indexOf(post.area)> -1; 自索引从 0



  var posts = [{area:'NY',name:'Bla',ads:true},{area:'DF',name:'SFS',ads :区域:'TT',名称:'SDSD',ads:true},{区域:'SD',名称:'引擎',ads:false},{area:'NSK',name:'丰田',ads:false},]; var filter = ['NY','SD']; function filtered(p,f){return p .filter(function(v){return v.ads&& f.indexOf(v.area)>  - 1;})} console.log(filtered(posts,filter));  

I have Javascript array of objets like this

var posts = [
 {area: 'NY', name: 'Bla', ads: true},
 {area: 'DF', name: 'SFS', ads: false},
 {area: 'TT', name: 'SDSD', ads: true},
 {area: 'SD', name: 'Engine', ads: false},
 {area: 'NSK', name: 'Toyota', ads: false},
];

and another filter collection like this

var filter = ['NY', 'SD'];

I am trying to filter my posts array with this filter

function filtered() {
  return posts
     .filter(function(post){
        return post.ads === true;
     })
     .filter(function(post){
        return filter.indexOf(post.area) > 0;
     })
}

console.log(filtered());

and this filter gives nothing, just empty array

Please check jsfiddle

解决方案

There is only need single Array#filter method and the second condition should be indexOf(post.area) > -1; since index starts from 0 .

var posts = [
 {area: 'NY', name: 'Bla', ads: true},
 {area: 'DF', name: 'SFS', ads: false},
 {area: 'TT', name: 'SDSD', ads: true},
 {area: 'SD', name: 'Engine', ads: false},
 {area: 'NSK', name: 'Toyota', ads: false},
];
  
var filter = ['NY', 'SD'];

function filtered(p, f) {
  return p
    .filter(function(v) {
      return v.ads && f.indexOf(v.area) > -1;
    })
}

console.log(filtered(posts, filter));

这篇关于过滤JavaScript对象与另一个数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆