我想知道是否有一种方法可以在JavaScript中做一些类似PHP foreach循环的事情。我正在寻找的功能是类似这样的PHP代码片段:
foreach($data as $key => $value) { }
我在看JS for. in循环,但似乎没有办法指定as。如果我用一个'normal' for循环(for(var I = 0;I < data.length;i++),有办法抓取键=>值对吗?
我想知道是否有一种方法可以在JavaScript中做一些类似PHP foreach循环的事情。我正在寻找的功能是类似这样的PHP代码片段:
foreach($data as $key => $value) { }
我在看JS for. in循环,但似乎没有办法指定as。如果我用一个'normal' for循环(for(var I = 0;I < data.length;i++),有办法抓取键=>值对吗?
当前回答
下面是一个非常接近的例子。
for(var key in data){
var value = data[key];
//your processing here
}
如果你正在使用jQuery,请访问:http://api.jquery.com/jQuery.each/
其他回答
是的,在javascript中你也可以有关联数组:
var obj =
{
name:'some name',
otherProperty:'prop value',
date: new Date()
};
for(i in obj)
{
var propVal = obj[i]; // i is the key, and obj[i] is the value ...
}
有三个选项来处理对象的键和值:
选择值: Object.values (obj)。forEach(value =>…); 选择键: 种(obj)。forEach(key =>…); 选择键和值: Object.entries (obj)。forEach(([key, value]) =>…
如果你正在使用Lodash,你可以使用_.forEach
_.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
console.log(key + ": " + value);
});
// => Logs 'a: 1' then 'b: 2' (iteration order is not guaranteed).
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是不是一个方法(如果目标是数组,你会得到很多方法的警告,例如indexOf, push, pop等)。
let test = {a: 1, b: 2, c: 3};
Object.entries(test).forEach(([key, value]) => console.log(key, value))
// a 1
// b 2
// c 3