= [...arr]; // copy array values
= arr; // copy array address
result.length = ls.length + 1;
$ node test.js
first for: 141.143ms
----------------------
second for: 1.455s
(() => {
function partsSums1(ls) {
const result = new Array(ls.length + 1);
result[ls.length] = 0;
for (let i = ls.length - 1; i > -1; i--) {
result[i] = result[i + 1] + ls[i];
}
return result;
}
function partsSums2(ls) {
if(ls.length==0) return [0];
const result=[];
result[ls.length] = 0;
let i=ls.length-1;
while(i!=-1)
result[i] = result[i+1]+ls[i--];
return result;
}
const testArr = [];
for(let i = 0; i < 10_000_000; i++) {
testArr.push(~~(Math.random() * 100));
}
console.time('first for');
partsSums1(testArr);
console.timeEnd('first for');
console.log('----------------------')
console.time('second for');
partsSums2(testArr);
console.timeEnd('second for');
})()
function partsSums(ls) {
ls.unshift(0);
let sum = ls.reduce((p, c) => p + c, 0);
return ls.map(v => sum = sum - v);
}
if
.
А что мешало написать
var del = '_//_';
?arr = arr.join(del).toLowerCase().split(del);
А это что за извращение? Мап? Не?
https://developer.mozilla.org/ru/docs/Web/JavaScri...