set-length-sparse-2.js (1263B)
1 function testDenseAndSparse1() { 2 var arr = [1, 2, 3, 4, 5]; 3 arr[2000000] = 2; 4 arr[1000000] = 1; 5 assertEq(arr.length, 2000001); 6 arr.length = 1500000; 7 assertEq(Object.keys(arr).length, 6); 8 arr.length = 2; 9 assertEq(Object.keys(arr).length, 2); 10 assertEq(JSON.stringify(arr), "[1,2]"); 11 } 12 testDenseAndSparse1(); 13 14 function testDenseAndSparse2() { 15 var arr = [1, 2, 3, 4, 5, 6]; 16 Object.defineProperty(arr, 1, {configurable: true, writable: false, value: -2}); 17 Object.defineProperty(arr, 3, {configurable: true, get: () => -4}); 18 assertEq(JSON.stringify(arr), "[1,-2,3,-4,5,6]"); 19 20 arr.length = 4; 21 assertEq(Object.keys(arr).length, 4); 22 assertEq(JSON.stringify(arr), "[1,-2,3,-4]"); 23 24 arr.length = 3; 25 assertEq(Object.keys(arr).length, 3); 26 assertEq(JSON.stringify(arr), "[1,-2,3]"); 27 28 arr.length = 2; 29 assertEq(Object.keys(arr).length, 2); 30 assertEq(JSON.stringify(arr), "[1,-2]"); 31 32 arr.length = 1; 33 assertEq(Object.keys(arr).length, 1); 34 assertEq(JSON.stringify(arr), "[1]"); 35 36 arr.length = 0; 37 assertEq(Object.keys(arr).length, 0); 38 assertEq(JSON.stringify(arr), "[]"); 39 40 arr[0] = 11; 41 arr[1] = 22; 42 arr[2] = 33; 43 assertEq(Object.keys(arr).length, 3); 44 assertEq(JSON.stringify(arr), "[11,22,33]"); 45 } 46 testDenseAndSparse2();