【问题标题】:how to create a multi dimensional array in javascript inside a jquery each loop?如何在每个循环的 jquery 内的 javascript 中创建多维数组?
【发布时间】:2012-02-18 12:33:42
【问题描述】:

我有这个例子:

var name;
var id;
var array = []; 

$.each(data, function(index, element) {
name = element.name;
id = element.id;
array[id] = name;
<a href="#" onClick="myFunction(array)">send</a>
console.log(array);
});

在这种情况下,.each 将迭代 5 次,id 将变为 1, 2, 3, 4, 5,name 将变为五个名称

我想创建一个多维数组或对象,如下所示:

[1:name1] for the first iteration
[2:name2] for the second on
...

将每对值传递给myFunction 函数 并在该函数内部访问数组值:

函数我的函数(数组){ // 提醒键和值 }

有什么想法可以完成这个场景吗?

【问题讨论】:

  • 第一个代码示例中间突然出现一堆 HTML,无法解析。你能澄清一下你想要做什么吗?
  • @Patriotccow - 考虑到“内部数组”的第一项作为标识符,您可能希望查看 associative arrays 而不是多维。或者,由于您使用的是从 1 开始的数字,因此请使用标准的一维数组并忽略零索引项。

标签: javascript jquery arrays multidimensional-array each


【解决方案1】:

不清楚您要做什么,但是如果您希望array 中的每个条目都是一个包含 id 和 name 值的数组,您可以更改此行:

array[id] = name;

到

array[id] = new Array(id, name);

但我可能不会为此使用数组,我可能只使用一个对象:

array[id] = {id: id, name: name};

然后你可以这样访问它:

x = array[id].name;

事实上,array 真的需要是一个数组吗?如果没有,就让它成为一个对象:

data = {};

将id设为键,将name设为值:

data[id] = name;

这就是你循环它的方式:

function myFunction(data) {
    var id, name;

    for (id in data) {
        name = data[id];
        alert("id is " + id + ", name is " + name);
    }
}

对于像这样的普通对象,没有必要,但是如果您正在循环的对象背后可能有一个原型,您只想查看对象的自己的属性:

function myFunction(data) {
    var id, name;

    for (id in data) {
        if (data.hasOwnProperty(id)) {
            name = data[id];
            alert("id is " + id + ", name is " + name);
        }
    }
}

【讨论】:

    猜你喜欢
    • 2014-02-14
    • 2012-10-29
    • 2021-02-01
    • 2011-05-28
    • 2018-07-05
    • 2014-10-25
    • 2012-04-26
    • 2019-12-29
    • 2016-02-07
    相关资源
    最近更新 更多