为什么这个javascript助手返回一个数组?

时间:2011-06-29 20:33:42

标签: javascript

function(obj){
 if(obj == undefined || obj == null){
   return '';
}

  var id = obj.match(/\d+$/);

  return id || '';
}

我有一个看起来像这样的DOM元素:

id="some-text-123"

我希望在调用上面的函数时返回id的'123'部分。

其他元素可能如下:

id="123"
id="some-123"
id="some-ting-else-1"

我在一个看起来像“some-text-213”

的元素上调用了它

它似乎返回一个数组,我只想返回id。

7 个答案:

答案 0 :(得分:3)

.match()返回一个数组。

这就是数组来自

的地方

请参阅小提琴:http://jsfiddle.net/maniator/WnFYD/

答案 1 :(得分:3)

答案 2 :(得分:1)

match函数返回一个数组,所以如果匹配,你的函数会返回一个数组。

答案 3 :(得分:1)

match方法返回一个数组,其中第一项包含整个匹配的文本。更新您的return语句以反映这一点:

return id ? id[0] : '';

答案 4 :(得分:1)

您可能希望在正则表达式中使用分组parens

var matches = obj.match(/(\d+$)/);
if(matches.length > 0) {
  return matches[1];
}

答案 5 :(得分:0)

Javascript的正则表达式匹配返回匹配结果的数组。在所有测试用例中,它将是一个包含单个值的数组,如[“123”]或[“1”]。如果您有一个类似“123-abcd-456”的测试用例,匹配将返回[“123”,“456”]。

如果您确定只想要第一场比赛,可以这样做:

var matches = obj.match(/\d+$/);
if(matches.length != 0) {
    return matches[0];
}

return '';

答案 6 :(得分:0)

return id[0] ¦¦ '';

返回第一场比赛是你想要的吗?

编辑:抱歉管道char目前不适合我