2013-03-10 2 views
3

Если у меня есть данные, что выглядит примерно так:JQuery для каждого на карте с индексом, ключом и значением

x = {"key1":"val1", "key2":"val2", "key3", "val3"}; 

Есть ли стандартный способ сделать для каждого над ними с функцией, которая возвращает ключ, значение и индекс?

Как я могу это сделать, это определить массив ключей и использовать индекс для доступа к нему, но есть ли более простой способ?

что-то вроде:

$.each(x, function(i, k, v) { 
    //... do something here 
} 
+1

Просто обычный старый 'для()' и ручной счетчик? – zerkms

+3

Ключи объектов являются неупорядоченными по своей природе. Большинство браузеров будут перебирать их в порядке добавления свойств, но они не гарантированы. –

ответ

6

Object.keys()link вместе с Array.prototype.forEachlink:

Синопсис

Object.keys(object).forEach(function(element, index, array) { 
}); 

Object.keys() возвращает все собственные ключи как массив и .forEach(), петли над массивом, как показано выше. Поскольку мы получаем Array от Object.keys(), мы можем, конечно же, применить к нему Array.prototype.sort() и получить доступ к клавишам в любом порядке, который нам нравится. Например

Object.keys(object).sort(function(a, b) { 
    return a.localeCompare(b); 
}).forEach(function(element, index, array) { 
    console.log(object[ element ]); 
}); 
+0

sneaky arent мы? : P – Dogoku

+0

Четкий и краткий! благодаря! – by0

1

вы можете создать свой собственный «индекс», если вы будете

var i =0; 
$.each(...... { 
    /* code */ 
    i++; 
}); 
Смежные вопросы