如何创建具有属性的JavaScript数组?

时间:2012-11-26 10:14:55

标签: javascript arrays properties

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.indexresult.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 个答案:

答案 0 :(得分:5)

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

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

console.log看起来与regex.exec返回的那个相同。

实例:http://jsfiddle.net/9rCmJ/

答案 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";