我正在学习mootools。我有一个以下格式的数组。 我想在for循环中遍历它,但不知道该怎么做。
{'apple' : { 'prize' : 10 , 'color' : 'Red' } ,
'banana' : { 'color' : 'red', 'prize' : 20, 'quantity' : 12 } }
我从另一个模块获得数组的结构,这就是为什么我不能改变它的结构。
答案 0 :(得分:2)
MooTools也有此功能,因此您无需自己使用hasOwnProperty
检查:
Object.each({ 'prize' : 10 , 'color' : 'Red' }, function(value, key){
// what you like to do.
});
请参阅文档:http://mootools.net/docs/core/Types/Object#Object:Object-each
了解数组和对象之间的区别确实很重要。上面的示例使用了Object literal。
对于数组,您可以使用Array:each。
[1, 2, 3, 4].each(function(value, key){
// what you like to do.
});
文档:http://mootools.net/docs/core/Types/Array#Array:each
但正如在另一个答案中所提到的,您可以使用for (var key in obj){}
循环来执行此操作,并使用纯JavaScript中的数组for (var i = 0, l = arr.length; i < l; i++){}
循环
答案 1 :(得分:1)
这些是对象,而不是数组。
示例: http://jsfiddle.net/AkVvY/
var obj = {'apple' : { 'prize' : 10 , 'color' : 'Red' } ,
'banana' : { 'color' : 'red', 'prize' : 20, 'quantity' : 12 } };
for( var name in obj ) {
alert( name + ': ' + obj[name].color );
}
你不需要一个库。
如果您担心可能会添加Object.prototype
,请执行以下操作:
示例: http://jsfiddle.net/AkVvY/1/
for( var name in obj ) {
if( obj.hasOwnProperty( name ) ) {
alert( name + ': ' + obj[name].color );
}
}