如何在jquery每个循环内的javascript中创建一个多维数组?

时间:2012-01-25 10:03:48

标签: javascript jquery arrays multidimensional-array each

我有这个例子:

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, 5name将变为五个名称

我想创建一个多维数组或一个看起来像这样的对象:

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

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

function myFunction(array){     //提醒关键和价值 }

任何想法如何实现这种情况?

1 个答案:

答案 0 :(得分:5)

目前尚不清楚您要尝试做什么,但如果您希望array中的每个条目都是包含ID和名称值的数组,则可以更改此行:

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);
    }
}

使用像这样的普通对象,没有必要,但如果你循环的对象可能有一个原型,你只想查看对象的自己的属性:< / p>

function myFunction(data) {
    var id, name;

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