foreach в js
Доброго времени суток!
В java я новичке и столкнулся с проблемой перебора массива. через json_unicode приходит вот такой массив {"number":"number","size_x":"size_x","size_y":"siz e_y","num_1":"num_1"}, но как его перебрать и произвести над каждым элементом действия? В php есть foreach, а в js? может быть в jquery есть? Рыл интернет, пока ничего не нащол! Киньте ссылку пожалуйста? |
Ну и правильно, что не нашел, ибо ты не знаешь даже основ веб-программирования.
Java != javascript, это во-первых. Java и javascript абсолютно разные языки, схожи лишь названием и ничем больше. Jquery - это никакой не самостоятельный язык, это всего-лишь набор готовых функций для javascript-программиста, ничуть не более. JSON предназначен именно для javascript, это родной для javascript формат данных, запись данных в json аналогична записи данных в самом javascript. Нет абсолютно никакой необходимости городить свои циклы. Если ты передаешь его в веб-страницу через echo, просто делай так: <?php $myarray = array("number"=>"number", "size_x"=>"size_x"); ?> <script> var myvar = <?php echo(json_encode($myarray)) ?>; console.log(myvar); </script> Если передаешь через ajax - прогоняй через eval. var myvar = eval('{"number":"number","size_x":"size_x","size_y":"siz e_y","num_1":"num_1"}'); Если не уверен в источнике данных - гугли "javascript разбор json" |
Ну а вообще аналог foreach в javascript - for in, и это тоже очень легко гуглится - https://www.google.com/search?q=javascript+аналог+foreach. Применяется вот таким образом:
var myarray = ["elem1", "elem2", "elem3"]; //Объявляем пронумерованный массив for (var index in myarray) { alert(myarray[index]); //Выводим значение каждого элемента массива. } |
Сам не силён, и если дезинформировал поправите меня! Если в ключе присутствует не цыфра, то это - Объекты.
Вам будет полезно http://javascript.ru/basic/array и http://javascript.ru/tutorial/object/intro Работая с javascript'om больше стал пользоваться поиском через этот сайт. Очень весело получается. Вот только мыслить нужно чуть по другому. Если это касается массива(как вы пишете php foreach while for), то и в поиске нужно писать массив или array, а не искать через foreach... Надеюсь помоГгггг... |
Цитата:
Цитата:
или так: var data = JSON.parse('{"number":"number","size_x":"size_x","size_y":"siz e_y","num_1":"num_1"}'); Object.keys(data).forEach(function (key) { data[key] //→ value }); |
var jsonStr = '{"number":"number","size_x":"size_x","size_y":"siz e_y","num_1":"num_1"}'; var objFromJsonStr = JSON.parse(jsonStr); for (objKey in objFromJsonStr) { alert(objKey + ': ' + objFromJsonStr[objKey]); } |
Цитата:
Вот простенькое сравнение поведения массивов и объектов. Массивы: var myarray = []; //Короткая форма объявления массива myarray[1] = "firstvalue"; myarray["key"] = "secondvalue"; console.log(myarray); console.log(myarray.toString()); Объекты: var myobject= {}; //Короткая форма объявления объекта myobject[1] = "firstvalue"; myobject["key"] = "secondvalue"; console.log(myobject); console.log(myobject.toString()); Еще деталь - массивы, в отличие от объектов, имеют набор нативных функций вроде push и split. Эти функции наследуются от общего предка массивов, и через перебор по for in их не увидишь. Вот здесь подробности. |
Цитата:
|
Erolast
Благодарю за пояснение, многое стало понятно :) Видел статью, всё не доходят глаза, в основном делаю манипуляции с массивами не сложные, пока достаточно для меня, но время подыщу. |
Спасибо! Всем! Вот что получилось.
$('.no_nul').each(function(){ if (this.value == ""){ alert('Пусто'); } else { alert(this.value); } }); Вот только как теперь запустить функцию? пробую так: $('.no_nul').each(function(){ if (this.value == ""){ this.css('border','1px solid red'); } else { alert(this.value); } }); но ругается в консоли this.css is not a function Понятно что это не функция Пробую так: $('.no_nul').each(function(){ if (this.value == ""){ function(){ this.css('border','1px solid red'); } } else { alert(this.value); } }); ругается: function statement requires a name Как заставить поменять border? |
Часовой пояс GMT +3, время: 16:55. |