【问题标题】:How to assign a Javascript array through it's indexes [duplicate]如何通过它的索引分配一个Javascript数组[重复]
【发布时间】:2012-11-23 18:58:13
【问题描述】:

可能重复:
Dynamically creating keys in javascript associative array

通常我们这样初始化一个数组:

var ar = ['Hello', 'World'];

为了访问它的值,我们这样做:

警报(ar[0]); // 你好

但我想要一个自定义索引来分配,例如:

var ar = ['first' => 'Hello', 'second' => 'World'];

然后

alert(ar['first']);

但我找不到怎么做,有没有这样的事情我可以为 assign 做?

谢谢!

【问题讨论】:

  • JavaScript 中没有关联数组这种东西。您要么拥有带有数字索引的数组,要么拥有对象:键和值的无序集合

标签: javascript arrays initialization


【解决方案1】:

您可以使用Object 代替数组,您可以为对象指定命名属性

var ar = {
  first: 'hello',
  second: 'world'
};
alert(ar['first']);

您也可以将带有字符串键的属性分配给您的数组,这也可以:

var ar = [];
ar['first'] = 'first';
alert(ar['first']);

【讨论】:

  • 其实我不知道我可以访问一个对象的节点作为一个字符串键,但现在我知道了,谢谢大家!
【解决方案2】:

你需要使用一个对象。

var obj = {'first': 'hello', 'second': 'world'};

alert(obj.first);

【讨论】:

    【解决方案3】:

    JavaScript 中的对象只是属性包(哈希表)。

    你可以:

    var ar = {};
    ar["name"] = "Dave";
    ar["salary"] = "Millions";
    
    alert(ar.name);  //Dave
    alert(ar["salary"]);  //millions
    

    JavaScript 让您可以非常灵活地创建这些对象。

    【讨论】:

      【解决方案4】:

      JavaScript 本身没有关联数组,但对象字面量:

      var obj = {foo:'bar'};
      obj.something = 'else';
      //or:
      obj['foo'] = 'BAR';
      

      如果您在数组上创建命名索引(因为 Array 对象追溯到 Object 原型),JS 不会大惊小怪,但您将失去对 Array 功能的所有使用(例如 sort 或神奇的length 属性,仅举几例)

      【讨论】:

        【解决方案5】:

        随便用

            var h = new Object(); // or just {}
        h['one'] = 1;
        h['two'] = 2;
        h['three'] = 3;
        
        // show the values stored
        for (var k in h) {
            // use hasOwnProperty to filter out keys from the Object.prototype
            if (h.hasOwnProperty(k)) {
                alert('key is: ' + k + ', value is: ' + h[k]);
            }
        }
        

        【讨论】:

          【解决方案6】:

          你可以这样做:

          var ar = {
             'first' :'Hello', 
             'second' : 'World'
           };
          

          如您所见,这是您在 Javascript 中初始化对象的方式。 Javascript 模糊了关联数组和对象之间的界限。

          然后您可以通过以下方式访问它:

          ar['first']
          

          甚至:

          ar.first
          

          此外,您可以在密钥初始化中省略引号,如下所示:

          var ar = {
             first :'Hello', 
             second : 'World'
           };
          

          【讨论】:

          • 请注意,这不再是一个数组。 (但从来没有——正确的数组没有命名索引。)
          • 请解释一下他的数组形式['value']和你的对象形式{'key' : 'value'}之间的区别。
          • @DavidThomas:这正是您在 javascript 中初始化哈希/对象的方式。 Javascript 模糊了两者之间的界限。此时您可以执行 ar['first'] 甚至 ar.first。
          • 谢谢!是的,我知道这是一个对象,但它也适用于我,我只想通过类参数获取索引,以将其值发送到 php 文件,再次非常感谢:)
          • @user1161318,是的,我知道。我要求你解释一下 OP 的好处... =)
          猜你喜欢
          • 2019-03-15
          • 1970-01-01
          • 2022-01-25
          • 1970-01-01
          • 2021-10-13
          • 2015-07-23
          • 1970-01-01
          • 2018-10-25
          • 1970-01-01
          相关资源
          最近更新 更多