Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.04.2011, 12:12
Аспирант
Отправить личное сообщение для tazododu Посмотреть профиль Найти все сообщения от tazododu
 
Регистрация: 18.02.2010
Сообщений: 90

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

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

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


Необходимо сделать форыч объекта data. Подскажите кто знает как
Ответить с цитированием
  #2 (permalink)  
Старый 29.04.2011, 12:44
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

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)})
Ответить с цитированием
  #3 (permalink)  
Старый 29.04.2011, 12:46
Аспирант
Отправить личное сообщение для tazododu Посмотреть профиль Найти все сообщения от tazododu
 
Регистрация: 18.02.2010
Сообщений: 90

B@rmaley.e><e

Спасибо за помощь!
Ответить с цитированием
  #4 (permalink)  
Старый 01.09.2016, 14:44
Интересующийся
Отправить личное сообщение для mpak Посмотреть профиль Найти все сообщения от mpak
 
Регистрация: 13.12.2014
Сообщений: 13

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

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

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

Последний раз редактировалось mpak, 01.09.2016 в 14:51.
Ответить с цитированием
  #5 (permalink)  
Старый 01.09.2016, 14:53
Аспирант
Отправить личное сообщение для scrollquest Посмотреть профиль Найти все сообщения от scrollquest
 
Регистрация: 21.08.2016
Сообщений: 77

mpak,
for in не подходит? Он вроде для этого и создан. А то что вверху -- действительно бредятина какая то, видимо, ребята с горшка сразу в разработку ринулись
Ответить с цитированием
  #6 (permalink)  
Старый 01.09.2016, 14:58
Аспирант
Отправить личное сообщение для scrollquest Посмотреть профиль Найти все сообщения от scrollquest
 
Регистрация: 21.08.2016
Сообщений: 77

B@rmaley.e><e,
Код ваш дебилен сразу по двум причинам. Первое -- это то что вы создали обертку над функционалом for in, нихуя не добавляющюю к нему, а только обвешивающую лишними коллбеками. Второе -- это то что в вышем внутреннем for in нет выхода в нужном месте, вместо этого Вы обходите все поля всех прототипов. Тут, вообще, все такие идиоты? Я пока других, что-то не встречал
Ответить с цитированием
  #7 (permalink)  
Старый 01.09.2016, 15:21
Аспирант
Отправить личное сообщение для scrollquest Посмотреть профиль Найти все сообщения от scrollquest
 
Регистрация: 21.08.2016
Сообщений: 77

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 и тикля, которые, ынтырпрайзом то особо и не назовешь. Выдыхай, епт

Последний раз редактировалось scrollquest, 01.09.2016 в 15:34.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передача JSON на сервер mikeles AJAX и COMET 0 04.03.2011 11:28
Массив AJAX + JSON RCuPeR AJAX и COMET 4 09.02.2011 12:34
jQuery. Обработка ошибок и JSON. mma_mma jQuery 3 19.07.2010 12:10
JSON. Как в callback функции изменить свойство объекта? master_alf jQuery 10 22.04.2010 17:08
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00