【问题标题】:How to create an array of array and populate data into it in JavaScript?如何在 JavaScript 中创建一个数组并将数据填充到其中?
【发布时间】:2013-08-01 13:21:50
【问题描述】:

我想根据用户输入创建一个数组。我不知道输入的细节,所以基本上我只需要用输入数据定义、初始化和填充数组,以便以后做进一步的操作。

示例数组可能如下所示:

var input = ["1" : ["0": "Apple",
                    "1": "Orange"],
             "2" : ["0", "Cat",
                    "1", "Dog"],
             "4" : ["0", "Coffee"]
        ];

现在,我不知道如何定义、初始化和填充它,因为这不起作用:

    var input = [[]];
    $('.input').each(function(index, element) {
        var element_id = this.id;
        var element_value = $.trim(this.value);
        input[element_id][index] = element_value;
    });

有 javascript 专家可以提供帮助吗?

【问题讨论】:

  • [[]] 不会创建矩阵,而是创建一个简单数组,其中包含第一个索引中的另一个数组。

标签: javascript jquery arrays multidimensional-array


【解决方案1】:

将您的代码更改为

var input = {};
$('.input').each(function(index, element) {
    var element_id = this.id;
    var element_value = $.trim(this.value);
    (input[element_id]||(input[element_id]={}))[index] = element_value;
});

你会得到类似的东西

    {"1" : {"0": "Apple",
                "1": "Orange"},
         "2" : {"0", "Cat",
                "1", "Dog"},
         "4" : {"0", "Coffee"}
    };

这不是数组里面的数组而是map里面的map,这似乎更适合你。

现在,假设您真的想要数组,那么您需要整数而不是字符串作为键。那你就可以了

var input = [];
$('.input').each(function(index, element) {
    var element_id = parseInt(this.id,10);
    var element_value = parseInt($.trim(this.value),10);
    (input[element_id]||(input[element_id]=[]))[index] = element_value;
});

【讨论】:

  • 问题进一步,稍后我需要获取数组的最后一个数字索引,那么它的'map'还是'array'有关系吗?因为我在某处读到,如果它是一个对象,那么它可能不会获得“最高”数字,而是任何随机对象索引。
  • 如果顺序对您很重要,并且您的密钥很合适(我的意思是它们更像1, 4, 5, 8, 9 而不是-45, 'hi!', 93, '+Infinity'),那么您应该使用数组。当然,您可以在地图中包含数组或在数组中包含地图。
  • 没错,顺序很重要,因为我想知道最高的键。再次感谢您!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-26
  • 2020-08-11
  • 1970-01-01
  • 2021-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多