cab*_*ret 380 javascript foreach
我想知道是否有办法foreach在JavaScript中执行类似PHP 循环的操作.我正在寻找的功能就像这个PHP代码片段:
foreach($data as $key => $value) { }
Run Code Online (Sandbox Code Playgroud)
我在看JS for..in循环,但似乎没有办法指定as.如果我使用'normal'for loop(for(var i = 0; i < data.length; i++)执行此操作,是否有办法获取key => value对?
J0H*_*0HN 509
for (var k in target){
if (target.hasOwnProperty(k)) {
alert("Key is " + k + ", value is " + target[k]);
}
}
Run Code Online (Sandbox Code Playgroud)
hasOwnProperty用于检查您是否target真的具有该属性,而不是从其原型继承它.更简单的是:
for (var k in target){
if (typeof target[k] !== 'function') {
alert("Key is " + k + ", value is" + target[k]);
}
}
Run Code Online (Sandbox Code Playgroud)
它仅仅检查k是不是方法(好像target是array,你会得到很多的提醒方法,例如indexOf,push,pop等.)
goa*_*ker 305
没有人提到过,Object.keys所以我会提到它.
Object.keys(obj).forEach(function (key) {
// do something with obj[key]
});
Run Code Online (Sandbox Code Playgroud)
Fra*_*ula 160
如果您可以本机使用ES6或使用Babel(js编译器),那么您可以执行以下操作:
const test = {a: 1, b: 2, c: 3};
for (const [key, value] of Object.entries(test)) {
console.log(key, value);
}Run Code Online (Sandbox Code Playgroud)
哪个会打印出这个输出:
a 1
b 2
c 3
Run Code Online (Sandbox Code Playgroud)
该Object.entries()方法返回给定对象自己的可枚举属性[key, value]对的数组,其顺序与for...in循环提供的顺序相同(不同之处在于for-in循环也枚举了原型链中的属性).
希望能帮助到你!=)
Pau*_*aul 103
这__CODE__将适合你.如果您将对象视为地图:
for( var key in obj ) {
var value = obj[key];
}
Run Code Online (Sandbox Code Playgroud)
Zir*_*rak 61
var obj = {...};
for (var key in obj) {
var value = obj[key];
}
Run Code Online (Sandbox Code Playgroud)
php语法只是糖.
Fel*_*ing 23
我假设你知道这i是关键,你可以通过data[i](并且只想要一个快捷方式)获得价值.
ECMAScript5 为数组引入了forEach [MDN](看起来你有一个数组):
data.forEach(function(value, index) {
});
Run Code Online (Sandbox Code Playgroud)
MDN文档为不支持它的浏览器提供了一个垫片.
当然这不适用于对象,但您可以为它们创建类似的功能:
function forEach(object, callback) {
for(var prop in object) {
if(object.hasOwnProperty(prop)) {
callback(prop, object[prop]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
由于您使用jquery标记了问题,因此jQuery提供了$.each [docs]循环,数组和对象结构.
Ton*_*tio 12
处理对象的键和值有以下三个选项:
选择值:
Object.values(obj).forEach(value => ...);
Run Code Online (Sandbox Code Playgroud)
选择键:
Object.keys(obj).forEach(key => ...);
Run Code Online (Sandbox Code Playgroud)
选择键和值:
Object.entries(obj).forEach(([key, value]) => ...);
Run Code Online (Sandbox Code Playgroud)
你可以使用for..in它.
for (var key in data)
{
var value = data[key];
}
Run Code Online (Sandbox Code Playgroud)
for (var key in myMap) {
if (myMap.hasOwnProperty(key)) {
console.log("key =" + key);
console.log("value =" + myMap[key]);
}
}
Run Code Online (Sandbox Code Playgroud)
在javascript中,每个对象都有一堆具有元信息的内置键值对.循环遍历对象的所有键值对时,也会循环遍历它们.使用hasOwnProperty()过滤掉这些.
let test = {a: 1, b: 2, c: 3};
Object.entries(test).forEach(([key, value]) => console.log(key, value))
// a 1
// b 2
// c 3
Run Code Online (Sandbox Code Playgroud)
自从提出这个问题以来,Javascript 添加了一些新功能。其中之一是Object.Entries方法。
直接从 MDN 复制的是以下代码片段
const object1 = {
a: 'somestring',
b: 42
};
for (let [key, value] of Object.entries(object1)) {
console.log(`${key}: ${value}`);
}
Run Code Online (Sandbox Code Playgroud)