在数组中搜索以“+”开头的括号

时间:2014-05-06 16:50:33

标签: javascript jquery arrays

我知道如何搜索数组中的特定括号:

var arr = ['a','f','+'];

if($.inArray('+', arr) != -1){
   alert("Contains a  single +");
}

现在我的问题是:如何检查数组是否包含以+开头的括号。如果是这样,有多少+包含此括号。

2 个答案:

答案 0 :(得分:2)

使用常规循环并匹配/^\++$/g的正则表达式:

var arr = ['a','f','+','foo','asd+asd', '+++++++'];

for (var i = 0, arrLength = arr.length, match; i < arrLength; i++) {
    match = arr[i].match(/^\++$/g);

    if (match) {
        console.log(arr[i] + ' contains ' + match[0].length + ' plus sign(s)');
    }
}

输出:

+ contains 1 plus sign(s)
+++++++ contains 7 plus sign(s) 

或者(因为它有点难以理解你的问题),下面将计算数组中有多少项只是加号:

var arr = ['a','f','+','foo','asd+asd', '+++++++'];

var onlyPlusses = [];

for (var i = 0, arrLength = arr.length; i < arrLength; i++) {
    if (arr[i].match(/^\++$/g)) {
        onlyPlusses.push(arr[i]);
    }
}

console.log('arr has ' + onlyPlusses.length + ' items that only consist of plusses');

输出:

arr has 2 items that only consist of plusses 

答案 1 :(得分:1)

使用对象维护哪些数组索引包含加号的列表。

var obj = {};
for (var i  = 0, l = arr.length; i < l; i++) {
  if (arr[i].indexOf('+') > -1) {
    obj[i] = arr[i].match(/\+/g).length;
  }
}

Demo

示例

var arr = ['a', '+', 'd', '+++'] // {1: 1, 3: 3}