在javascript数组中搜索并提取字符串

时间:2016-05-14 15:03:54

标签: javascript arrays

我在javascript中有一个包含“aassd, v_value1 ,asadds, v_value2 ,asddasd ...”的数组,我需要提取以 v _ 在一个新数组中。

我使用下一个函数来获取值,但只得到第一个值。

function search (array,string) {

    var arr= [];

    for (var i=0; i<array.length; i++) {
        if (array[i].match(string)){

          arr.push(i)

          return arr;
        }  
    }
      return -1;
  }

 search(array,'v_')

感谢。

3 个答案:

答案 0 :(得分:2)

您应该使用.filter()方法,如下所示:

function search (array,string) {
  return array.filter(function (val) {
    return val.substr(0, string.length) === string;
  });
}

filter()方法返回满足回调函数

条件的数组项

答案 1 :(得分:0)

我认为以下可能有用。只是字符串匹配并推送到新数组(如果找到)。

&#13;
&#13;
var arr = ['aassd','v_value1','asadds','v_value2','asddasd'];
var newArr = []


substring = "v_";

for (var i = 0; i < arr.length; i++) {
    if (arr[i].search(substring) === 0) {
      newArr.push(arr[i]);
    }
}

alert(newArr);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

function search (array,string) {

    var arr= [];

    for (var i=0; i<array.length; i++) {
        //Do not use MATCH here as you need values that STARTS WITH "v_", match will give you values like this asdasdav_asdasda also.
        if (array[i].startsWith(string)){
          //instead of this 
          //arr.push(i)
          //use this , the above will push the index, this will push the VALUE(as asked in the question)
          arr.push(array[i])

          //remove this: as this breaks on the first true condition , hence you get one value.
          //return arr;
        }  
    }
      return arr;
  }

错误

  1. 不要使用MATCH,因为它会在字符串中的任何位置返回带有模式的值。 使用startsWith而不是
  2. 返回循环外,因为它在第一次匹配时结束循环,因此只得到第一个项目
  3. 您应该按照问题中的要求推送值而不是索引。这样做arr.push(array[i])