Как создать многомерный массив в JavaScript внутри каждого цикла JQuery? - PullRequest
0 голосов
/ 25 января 2012

У меня есть этот пример:

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 и внутри этой функции, чтобы иметь доступ к значениям массива:

function myFunction (array) {// оповещение о ключе и значении}

Есть идеи, как мне реализовать этот сценарий?

1 Ответ

5 голосов
/ 25 января 2012

Непонятно, что вы пытаетесь сделать, но если вы хотите, чтобы каждая запись в array была массивом, содержащим значения идентификатора и имени, вы можете изменить эту строку:

array[id] = name;
*От 1004 * до
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);
        }
    }
}
...