javascript - 如何制作具有属性的 JavaScript 数组?

标签 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 上运行时那样显示属性,所以我怀疑它仍然不是一回事。

最佳答案

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

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

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

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

关于javascript - 如何制作具有属性的 JavaScript 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13562661/

相关文章:

javascript - JS/JQuery 获取多维对象中键的值

java - 如何从 Spring messageSource 手动重新加载属性文件

java - java中属性文件的路径

javascript - Agenda js 作业立即执行

javascript - 如何获取 Auth0 自定义操作来发送 Axios 请求

javascript - 查找属性所属的对象

C# 不安全类型 -> char*[] ,获取 char 数组上的指针

java - Java 中的最终 int

objective-c - 设置属性时执行附加代码的正确方法

javascript - 带有ajax的js中的OOP方法