如果包含关键字,则获取数组值

时间:2016-02-28 04:16:45

标签: javascript jquery arrays

基本上,我想扫描一些内部包含关键字的数组,例如:

var origArray = [];

    var newName = ['ManagingOrg', 'ActiveOrg', 'Severity', 'SeverityClassification'
    ];


    for (var i = 0; i < newName.length - 1; i++) {
        var object = {};
        object[newName[i]] = newName[i];
        object = JSON.stringify(object);
        origArray.push(object);

    }

我想获得橙色,橙色356和橙色fsa 。我试图使用不同的Jquery方法来完成我的功能。

arr = [ {"name":"apple", "count": 2},
{"name":"orange", "count": 5},
{"name":"pear", "count": 3},
{"name":"orange 356", "count": 16},
{"name":"orange fsa", "count": 15},]

和替代方案:

var newArr = arr.filter(function(item){
    return item.name == "orange"; // tried = and === but no luck 
});
console.log("Filter results:",newArr);

但它只为我返回了arr [1],我怎么能够把所有东西都包含在内?&#34; orange&#34;?

解决方案:

    var newArr = [];

for(var i= 0, l = arr.length; i< l; i++){
    if(arr[i].name = "orange" ){
    newArr.push(arr[i]);
        }
    }
  console.log("Filter results:",newArr);

2 个答案:

答案 0 :(得分:1)

  

使用搜索字符串return index的{​​{3}},如果大于 0 ,则表示字符串中存在search字符串。< / p>

试试这个:

var arr = [{
  "name": "apple",
  "count": 2
}, {
  "name": "orange",
  "count": 5
}, {
  "name": "pear",
  "count": 3
}, {
  "name": "orange 356",
  "count": 16
}, {
  "name": "orange fsa",
  "count": 15
}]

var newArr = arr.filter(function(item) {
  return item.name.indexOf("orange") > -1;
});
console.log(newArr);
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>

答案 1 :(得分:1)

例如,您可以使用String indexOf函数代替:

return item.name == "orange";

你这样做:

return item.name.indexOf("orange") != -1;

字符串indexOf()方法返回字符串中第一次出现指定搜索词的位置,如果找不到搜索词,则返回-1。