RegExp.exec
函数returns something that looks like a hybrid array。它是一个数组,但它有属性。
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
的结果上运行那样显示属性,所以我怀疑它仍然不一样。
答案 0 :(得分:5)
足够简单 - javascript中的数组只是一个对象,您可以附加您喜欢的任何属性:
var test = ["foo","bar","baz"];
test.index = 1;
test.input="foobarbaz";
console.log(test);
console.log
看起来与regex.exec
返回的那个相同。
答案 1 :(得分:3)
你是说这个吗?
var arr = [0, 1];
arr.a = 1;
答案 2 :(得分:3)
数组也是一个对象,因此您可以直接设置属性:
var myArray = ['a', 'b'];
console.log(typeof myArray); // 'object'
myArray.say = 'hi';
答案 3 :(得分:3)
分两步完成:
var a = [1, 2, 3];
a.test = "Hello world";