使用下划线从对象列表中筛选匹配的值

filtering matching values from list of object using underscore

本文关键字:筛选 列表 下划线 对象      更新时间:2023-09-26

我在项目中使用UnderscoreJs。我必须筛选一个包含具有属性的对象的数组。我需要根据这些值进行筛选。该值可以是对象的任何属性。例如:"迷你"应该同时获得"丰田"answers"本田",因为"迷你"是两个对象的一部分

[{ name:"Toyota minivan", id:"506", size: "large" }, { name:"Honda Civic", id:"619", size: "mini" }]

如何使用Undercore。我尝试过以下方法,但没有成功。

var searchStr="mini";
var evens = _.filter([arrayData], function(obj){ return _.contains(obj, searchStr); });

你能告诉我哪里出了问题吗?

_.contains仅适用于数组,因此需要首先获取每个对象的值,然后检查其中是否包含搜索字符串。在本例中,我使用了someindexOf来匹配字符串。

var searchStr="mini";
var mini = _.filter(arr, function (obj) {
    return _.values(obj).some(function (el) {
        return el.indexOf(searchStr) > -1;
    });
});

DEMO

好吧,我已经用简单的if条件做到了这一点,这样将来如果你想在一个数组中列出mini,在一个阵列中列出large,这样你就可以很容易地做到。我已经检查了对象属性,如果匹配,则分配给新列表。这是我的密码。并在这里查看演示小提琴

 var list=[{ name:"Toyota minivan", id:"506", size: "large" }, 
              { name:"Honda Civic", id:"619", size: "mini" },
              {name:"zen",id:"606",size:"mini"}]; 
   var result=_.filter(list, function(obj){
                  if(obj.size=='mini'){ 
                    var matchedcars=obj; 
                    console.log("result"+JSON.stringify(matchedcars));
                  } 
                   return matchedcars;
   });
     alert("result"+JSON.stringify(result));