0

我正在开发一个程序,该程序使用 javascript 从大量文本中提取信息,并且在查看类似的前同事代码时,我发现当您保存 .exec() 的结果并执行 .index 时变量它为您提供数组中该子字符串的索引。

Example:

var str="I found this for you!";
var pattern=/this/igm;
var result=pattern.exec(str);
document.write("\"This\" Index = " +  result.index + ".");

Result:

"This" Index = 8.

当我在网上查看时,我发现 exec() 返回一个数组,看起来数组没有 .index 属性。我对 .index 的所有搜索似乎都出现了 index()。

这里发生了什么?为什么这行得通?我还想知道我是否可以做一些与此相关的其他事情(比如 .lastindex)。

4

2 回答 2

2

这是一个很好的资源exec它不仅返回一个具有额外属性的数组,例如index,而且还修改了所使用的正则表达式对象。

尝试这个:

var str="I found this for you!";
var pattern=/this/igm;
var result=pattern.exec(str);
for(var i in result){
    console.log("i: " + i);
    console.log("result[" + i + "]: " + result[i]);
}

// i: 0
// result[0]: this
// i: index
// result[index]: 8
// i: input
// result[input]: I found this for you!
于 2012-07-12T21:33:27.593 回答
2

index是由 . 添加到数组中的特殊属性exec。默认情况下它不一定必须存在,并且自己复制行为非常容易。

var example = [1, 2, 3];
example.index = 15;
于 2012-07-12T21:29:20.273 回答