【问题标题】:How do I make a JavaScript array that has properties?如何制作具有属性的 JavaScript 数组?
【发布时间】:2012-11-13 19:12:59
【问题描述】:

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 arrays properties


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

      你是这个意思吗?

      var arr = [0, 1];
      arr.a = 1;
      

      【讨论】:

        【解决方案3】:

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

        var myArray = ['a', 'b'];
        console.log(typeof myArray); // 'object'
        myArray.say = 'hi';
        

        【讨论】:

          【解决方案4】:

          分两步完成:

          var a = [1, 2, 3];
          a.test = "Hello world";
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-07-06
            • 2018-12-19
            • 2014-02-04
            • 2017-01-29
            相关资源
            最近更新 更多