【问题标题】:javascript array index problem!javascript数组索引问题!
【发布时间】:2010-08-04 06:27:31
【问题描述】:

var a = new array(); a[1] = 'A'; b[10] = 'B'; 控制台.log(a); /[未定义,“A”,未定义,未定义,未定义,未定义,未定义,未定义, 未定义,未定义,“B”]/ 我想删除未定义的元素 但过程是什么??

【问题讨论】:

  • var a = new Array(); a[1] = 'A'; a[10] = 'B';控制台.log(a); [empty, "A", empty × 8, "B"] 是最新的

标签: javascript arrays indexing


【解决方案1】:

首先,jQuery与此无关。

其次,数组是“自动填充的”。如果你定义索引10,所有索引0 - 9都会被自动占用,这就是Javascript数组的工作方式。

你正在寻找的可能是一个对象:

var a = {};
a[1] = 'A';
a[10] = 'B';

或

var a = {
    1 : 'A',
    10 : 'B'
};

【讨论】:

  • 但我需要一份价值清单
【解决方案2】:

在这种情况下,您可以像这样使用Object 而不是Array:

var a = {}; // or var a = new Object();
a[1] = 'A';
a[10] = 'B';
a['foo'] = 'bar';
a.bar = 'foo'; // same as a['bar'] = 'foo';
console.log(a);

【讨论】:

    【解决方案3】:

    数组总是从 0 开始,然后一直到最后填充的索引。 你可以使用一个对象来解决你的问题:

    var a = {};
    a[1] = 'A';
    a[10] = 'B';
    

    【讨论】:

      【解决方案4】:

      好吧,删除那些undefined 部分就可以了

      a[0] = 'A';
      a[1] = 'B';
      

      在您的 sn-p 中,您使用索引 10 填充元素,这会强制 ECMAscript 使用 10 fields 创建一个数组。 1 和 10 之间的所有字段都没有定义,这意味着它们是正确的 undefined。

      要删除这些字段,您必须设置一个正确的值或将map 和non-undefined 值设置到一个新数组中,如果您首先创建一个正确的数组,这将是不必要的。

      创建一个真正的object 而不是一个数组(实际上也是一个对象)来获得你想要的行为。

      var a = {};
      
      a[1] = 'A';
      a[2] = 'B';
      
      console.log(a);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-30
        • 1970-01-01
        • 1970-01-01
        • 2018-01-25
        • 2011-07-04
        • 2016-03-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多