我有一个for循环,大致如下:
for (var key in myObjectArray) {
[code]
}
我希望做同样的事情,但每次输出的顺序都不同。 有没有简单的方法可以实现?我可以创建一个键的单独数组,对它们进行排序,然后使用索引进行for循环...但这似乎是很麻烦且相当低效的方法。
我有一个for循环,大致如下:
for (var key in myObjectArray) {
[code]
}
var keys;
if( Object.keys) keys = Object.keys(myObjectArray);
else keys = (function(obj) {var k, ret = []; for( k in obj) if( obj.hasOwnProperty(k)) ret.push(k); return ret;})(myObjectArray);
// isn't browser compatibility fun?
keys.sort(function() {return Math.random()-0.5;});
// there are better shuffling algorithms out there. This works, but it's imperfect.
function doSomething(key) {
console.log(key+": "+myObjectArray[key]);
}
if( keys.forEach) keys.forEach(doSomething);
else (function() {for( var i=0, l=keys.length; i<l; i++) doSomething(keys[i]);})();