iterator-indices-6.js (948B)
1 var iters = 0; 2 3 function test(o1, o2) { 4 var count = 0; 5 for (var s1 in o1) { 6 for (var s2 in o2) { 7 if (Object.hasOwn(o1, s1)) { 8 count += o1[s1]; 9 } 10 if (Object.hasOwn(o2, s2)) { 11 count += o2[s2]; 12 } 13 } 14 } 15 assertEq(count, 2); 16 } 17 18 function test2(o1, o2) { 19 var count = 0; 20 var keys1 = Object.keys(o1); 21 for (var i = 0; i < keys1.length; i++) { 22 var s1 = keys1[i]; 23 24 var keys2 = Object.keys(o2); 25 for (var j = 0; j < keys2.length; j++) { 26 var s2 = keys2[i]; 27 if (Object.hasOwn(o1, s1)) { 28 count += o1[s1]; 29 } 30 if (Object.hasOwn(o2, s2)) { 31 count += o2[s2]; 32 } 33 } 34 } 35 assertEq(count, 2); 36 } 37 38 var arr = []; 39 for (var i = 0; i < 20; i++) { 40 arr.push({["x_" + i]: 1}); 41 } 42 43 with ({}) {} 44 for (var i = 0; i < 2000; i++) { 45 var idx1 = i % arr.length; 46 var idx2 = 1 + i % (arr.length - 1); 47 test(arr[idx1], arr[idx2]); 48 test2(arr[idx1], arr[idx2]); 49 }