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? |
В колбеках jQuery this - не узел DOM, а объект jQuery, и использовать его надо соответствующе.
$('.no_nul').each(function(){
if ($(this).val() == ""){
$(this).css('border','1px solid red');
}
else {
alert($(this).val());
}
});
|
Но ты зря лезешь работать с jQuery, не разобравшись с основами javascript. Можешь запутаться глубоко и окончательно.
|
Цитата:
|
Цитата:
|
| Часовой пояс GMT +3, время: 15:35. |