2

RegExp.exec函数返回一个看起来像混合数组的东西。它是一个数组,但它具有属性。

console.log(/d(b+)(d)/i.exec("cdbBdbsbz"));
// => ["dbBd", "bB", "d", index: 1, input: "cdbBdbsbz"]

我可以打电话给result[0], result[1], result.index,result.input等。

我如何自己制作?

[0, 1, "a": 1]显然是一个语法错误,并且{"0": 1, "1": 1, "a": 1} 确实给了我一个可以索引和访问属性的对象,但是它exec.

我试着用__proto__

arr = [1, 2, 3];
arr.__proto__.a = 1 // arr.a is 1 now

但是console.log不会像在结果上运行时那样显示属性exec,所以我怀疑它仍然不是一回事。

4

4 回答 4

5

很简单 - javascript 中的数组只是一个对象,您可以将任何您喜欢的属性附加到它:

var test = ["foo","bar","baz"];
test.index = 1;
test.input="foobarbaz";
console.log(test);

console.log看起来与regex.exec.

现场示例:http: //jsfiddle.net/9rCmJ/

于 2012-11-26T10:24:12.187 回答
3

你是这个意思吗?

var arr = [0, 1];
arr.a = 1;
于 2012-11-26T10:21:14.423 回答
3

数组也是一个对象,所以可以直接设置属性:

var myArray = ['a', 'b'];
console.log(typeof myArray); // 'object'
myArray.say = 'hi';
于 2012-11-26T10:23:47.070 回答
3

分两步进行:

var a = [1, 2, 3];
a.test = "Hello world";
于 2012-11-26T10:24:29.597 回答