Чудех се дали има начин да направя нещо подобно на цикъла foreach
на PHP в JavaScript. Функционалността, която търся, е нещо подобно на този PHP фрагмент:
foreach($data as $key => $value) { }
Разглеждах цикъла for..in
в JS, но изглежда няма начин да се посочи as
. Ако направя това с 'нормален' for цикъл (for(var i = 0; i < data.length; i++
), има ли начин да се вземат двойките ключ => стойност?
for (var k in target){
if (target.hasOwnProperty(k)) {
alert("Key is " + k + ", value is " + target[k]);
}
}
hasOwnProperty
се използва, за да се провери дали вашата цел
наистина притежава това свойство, а не го е наследила от своя прототип. Малко по-просто би било:
for (var k in target){
if (typeof target[k] !== 'function') {
alert("Key is " + k + ", value is" + target[k]);
}
}
Той просто проверява дали k
не е метод (тъй като ако target
е array
, ще получите много методи, например indexOf
, push
, pop
и т.н.)
for...in ще работи за вас.
for( var key in obj ) {
var value = obj[key];
}
В съвременния JavaScript също можете да направите това:
for ( const [key,value] of Object.entries( obj ) ) {
}
var obj = {...};
for (var key in obj) {
var value = obj[key];
}
Синтаксисът на php е просто захар.