使用underscore.js搜索对象数组中的String

时间:2016-06-21 05:48:52

标签: javascript node.js underscore.js

我想使用underscore.js

搜索对象内的String

JSON数据

{ data:
       [ 
         {'id': 1, 'name': 'New Samsung Galaxy 3' },
         {'id': 2, 'name': 'Samsung Grand'},  
         {'id': 3, 'name': 'Galaxy 3 dress new Arrival'}, 
         {'id': 4, 'name': 'Samsung Galaxy 3 black ' }, 
         {'id': 5, 'name': 'Samsung refrigerators'} 
        ];
 }

假设我有一个关键字 Samsung Galaxy 3。我希望它只返回匹配的字符串。

喜欢此输出:

{ data:
       [ 
          {'id': 1, 'name': 'New Samsung Galaxy 3' },
          {'id': 4, 'name': 'Samsung Galaxy 3 black ' }, 
       ];
 }

2 个答案:

答案 0 :(得分:2)

使用_filter

var data =
       [ 
         {'id': 1, 'name': 'New Samsung Galaxy 3' },
         {'id': 2, 'name': 'Samsung Grand'},  
         {'id': 3, 'name': 'Galaxy 3 dress new Arrival'}, 
         {'id': 4, 'name': 'Samsung Galaxy 3 black ' }, 
         {'id': 5, 'name': 'Samsung refrigerators'} 
        ];

    _.filter(data, function(item) { 
       return item.name.indexOf("Samsung Galaxy 3") != -1; 
    });

答案 1 :(得分:1)

您可以使用_filter_where

_filter: 返回通过真值测试的所有元素。与select类似。

_where: filter的常见用例的便捷版本。仅选择对象 包含特定的key:value对。

http://jsfiddle.net/yqagfLqb/

var data =
   [ 
     {'id': 1, 'name': 'New Samsung Galaxy 3' },
     {'id': 2, 'name': 'Samsung Grand'},  
     {'id': 3, 'name': 'Galaxy 3 dress new Arrival'}, 
     {'id': 4, 'name': 'Samsung Galaxy 3 black ' }, 
     {'id': 5, 'name': 'Samsung refrigerators'} 
    ];

_.where(data, function(item) { 
   return item.name.indexOf("Samsung Galaxy 3") != -1; 
});

console.log(data);
相关问题