Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   foreach JSON объекта (https://javascript.ru/forum/jquery/16938-foreach-json-obekta.html)

tazododu 29.04.2011 12:12

foreach JSON объекта
 
Всем привет! Подскажите как сделать форыч для следующего:

С сервера приходит массив вида
(
    [12] => Выбранный адрес занят.
    [14] => Выбранный адрес занят.
    [12582] => Выбранный адрес занят.
    [10698] => Выбранный адрес занят.
    [9855] => Выбранный адрес занят.
    [8872] => Выбранный адрес занят.
    [1499] => Выбранный адрес занят.
    [1500] => Выбранный адрес занят.
    [12020] => Выбранный адрес занят.
    [1505] => Выбранный адрес занят.
)

делаю:
var data = $.parseJSON(data);


Необходимо сделать форыч объекта data. Подскажите кто знает как:)

B@rmaley.e><e 29.04.2011 12:44

function forEach(data, callback){
  for(var key in data){
    if(data.hasOwnProperty(key)){
      callback(key, data[key]);
    }
  }
}

forEach({a: 5, b: 7, c: 42, d: 'Hello, world!'}, function(key, value){alert(key + ': ' + value)})

tazododu 29.04.2011 12:46

B@rmaley.e><e

Спасибо за помощь!

mpak 01.09.2016 14:44

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

После нескольких минут соорудил функцию, которая не оставляет мусора, вроде задача решена, но остадочек от убогости яваскрипта остался. Вещи, которые в других языках решены на уровне конструкций языка в яваскрипте приходится ломать голову как реализовать

(function(data, v){for(k in data){ var v = data[k];
	console.log("k:", k, "v:", v);
}})(HH_BLOCKS_SLIDER);

scrollquest 01.09.2016 14:53

mpak,
for in не подходит? Он вроде для этого и создан. А то что вверху -- действительно бредятина какая то, видимо, ребята с горшка сразу в разработку ринулись

scrollquest 01.09.2016 14:58

B@rmaley.e><e,
Код ваш дебилен сразу по двум причинам. Первое -- это то что вы создали обертку над функционалом for in, нихуя не добавляющюю к нему, а только обвешивающую лишними коллбеками. Второе -- это то что в вышем внутреннем for in нет выхода в нужном месте, вместо этого Вы обходите все поля всех прототипов. Тут, вообще, все такие идиоты? Я пока других, что-то не встречал

scrollquest 01.09.2016 15:21

mpak,
Что ты соорудило, чудо в перьях? Если тебя смущает то, что for in оставляет переменные (а так оно и должно быть, чтобы была возможность восстановить цикл) есть delete
for(i in {a: 1}){}
alert(i)
delete i
alert(window.i)


Цитата:

Сообщение от mpak
(function(data, v){for(k in data){ var v = data[k];
    console.log("k:", k, "v:", v);
}})(HH_BLOCKS_SLIDER);


Да ты еще при всех своих беспонтовых извращениях умудрилось в глобал насрать
;(function(data, v){for(k in data){ var v = data[k];
    console.log("k:", k, "v:", v);
}})({a: 1});
console.log(k)


молоко на губах начала высуши, а потом о *более других языках* рассуждай. Из ынтырпрайзных языков сейчас у JS почти все отсосут, если не считать ruby и тикля, которые, ынтырпрайзом то особо и не назовешь. Выдыхай, епт


Часовой пояс GMT +3, время: 11:31.