for (var k in target){ if (target.hasOwnProperty(k)) { alert("Key is " + k + ", value is" + target[k]); } }
hasOwnProperty被用来检查你的target真的有这个属性,而不是从它的原型inheritance它。 有点简单的是:
for (var k in target){ if (typeof target[k] !== 'function') { alert("Key is " + k + ", value is" + target[k]); } }
它只是检查k是不是一个方法(如果target是array你会得到很多方法提醒,例如indexOf , push , pop等)。
没有人提到Object.keys所以我会提到它。
Object.keys(obj).forEach(function (key) { // do something with obj[key] });
For for in将会为你工作。 如果你把一个对象看作一个地图:
for(key in obj){ // The key is key // The value is obj[key] }
var obj = {...}; for (var key in obj) { var value = obj[key]; }
PHP的语法只是糖。
如果你可以使用ES6本身或与Babel (JS编译器),那么你可以做到以下几点:
let test = {a: 1, b: 2, c: 3}; for (let [key, value] of Object.entries(test)) { console.log(key, value); }
哪个会打印出这个输出:
a 1 b 2 c 3
Object.entries文档
为…文件
解构赋值文档
希望能帮助到你! =)
我假设你知道i是关键,你可以通过data[i] (只是想要一个快捷方式)获得价值。
ECMAScript5 forEach [MDN]为数组引入(看起来你有一个数组):
data.forEach(function(value, index) { });
MDN文档为不支持它的浏览器提供了一个垫脚。
当然,这不适用于对象,但是可以为它们创build一个类似的function:
function forEach(object, callback) { for(var prop in object) { if(object.hasOwnProperty(prop)) { callback(prop, object[prop]); } } }
由于您用jquery标记了问题,因此jQuery提供了$.each [docs] ,它循环使用数组和对象结构。
你可以使用for..in 。
for (var key in data) { var value = data[key]; }
for (var key in myMap) { if (myMap.hasOwnProperty(key)) { console.log("key =" + key); console.log("value =" + myMap[key]); } }
在JavaScript中,每个对象都有一堆内置的具有元信息的键值对。 当你循环遍历所有的键值对的对象。 hasOwnProperty()的使用过滤出来。
ES6将提供Map.prototype.forEach(callback),可以这样使用
myMap.forEach(function(value, key, myMap) { // Do something });
你可以使用'for in'循环:
for (var key in bar) { var value = bar[key]; }
下面是一个尽可能接近你的例子。
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 ... }
var global = (function() { return this; })(); // Pair object, similar to Python function Pair(key, value) { this.key = key; this.value = value; this.toString = function() { return "(" + key + ", " + value + ")"; }; } /** * as function * @param {String} dataName A String holding the name of your pairs list. * @return {Array:Pair} The data list filled * with all pair objects. */ Object.prototype.as = function(dataName) { var value, key, data; global[dataName] = data = []; for (key in this) { if (this.hasOwnProperty(key)) { value = this[key]; (function() { var k = key, v = value; data.push(new Pair(k, v)); })(); } } return data; }; var d = { 'one': 1, 'two': 2 }; // Loop on your (key, list) pairs in this way for (var i = 0, max = d.as("data").length; i < max; i += 1) { key = data[i].key; value = data[i].value; console.log("key: " + key + ", value: " + value); } // delete data when u've finished with it. delete data;