javascript какой из вариантов выбрать?
Ты перебираешь массив и в случае единичного совпадения значения с определённым устанавливаешь значение а переменную?
Если я тебя правильно понял, то только for - for это просто цикл, а map создаёт ещё один массив со значениями из результатов вызова callback
for (var i = searchRes.hits.hits.length; i--; ) {
var hit = searchRes.hits.hits[i];
if (hit._source.name.lang.rus === childName) {
childID = searchRes.hits.hits[i]._id;
break;
}
}
В противном случае второй вариант, скорее всего, ошибочен, а в первом лучше добавить проверку на searchRes.hits.hits[i] !== undefined
не знаю, корректен, или нет, но оба одинаковый результат дают.
З.Ы. из forEach можно выйти break-ом? (я в метро уже, не могу проверить)?
З.З.Ы. а что конкретно делает "for(var i in searchRes.hits.hits)"?
(я так понял просто второй ломает searchRes.hits.hits т.к. не возвращает ничего)
что предпочтительнее?на функциональщине map идет в топку (он как бы для других сценариев) и на сцену выходит filter
http://stackoverflow.com/questions/3241881/jquery-index-of-e...
яваскриптом не владею
а этот вариант чем-то отличается от "вариант 1" ?
на функциональщине map идет в топку (он как бы для других сценариев)Ч0ч0?
Ч0ч0?это же сротишка - он лучше всех знает
тут лучше всего выглядит filter (с точки зрения правильности)
правда, какой-нибудь цикл может и побыстрее работать
var iter = function (arr, callback) {
var len = arr.length;
for (var i = 0; i < len; i++) {
callback(arr[i]);
};
var val;
if (ISARRAY == 1) {
var values = VALUE.split(',');
val = [];
/*
if (%some condition%)
iter(values, function (x) {
values.push(x.match(/\d+/)[0])
})
else
*/
iter(values, val.push);
} else
val = VALUE;
var iter = function (arr, callback) {потому что фигурную скобку забыл
var len = arr.length;
for (var i = 0; i < len; i++) {
callback(arr[i]);
};
var val;
if (ISARRAY == 1) {
var values = VALUE.split(',');
val = [];
/*
if (%some condition%)
iter(values, function (x) {
values.push(x.match(/\d+/)[0])
})
else
*/
iter(values, val.push);
} else
val = VALUE;
а по делу ты передаешь val.push в качестве callback, ?указатель? указывает на функцию Array.prototype.push
в коде функции ты вызываешь push в глобальном контексте
т.е. работает, но не так как ты ожидал
все эти значения добавятся в window
PS код говно и выглядит как говно
нельзя что-нить типа
var vals = VALUE.split(',').map(function(e, i, a) {
if(var res = /\d+/i.exec(e
return res[0];
else
return e;
});
было сделать?
в некоторых других языках метод объекта - это два указателя: на тело с инструкциями и на this.
Оставить комментарий
kill-still
подскажите, кто хорошо разбирается, что предпочтительнее?вариант 1:
вариант 2: