我正在開發一個基于 javascript 的應用程式,其中我有一個陣列,如下所示:
[-12.66, 268.2, 48.99, -1264.5, 20550, 91.2, 0, 0, 0, 0, 0, 0, 0, 0, 9235.5, 1500, 0, 0, 18.99, 0, 0, null, null, null, null, null, null, null, null, null, null]
現在我想對以下錯誤進行累積求和,直到它回傳空值,一旦它開始讀取空值,它應該從那里回傳 null 或者應該按原樣回傳并且不應該從那里進行累積求和。
我已經使用以下方法完成了array.reduce:
let resultArray=[];
array1.reduce(function (acc, curr, index) { return resuleArray[index] = acc curr }, 0);
// here array1 is source array.
但是,這將回傳如下
[-12.66, 255.54, 304.53, -959.97, 19590.03, 19681.23, 19681.23, 19681.23, 19681.23, 19681.23, 19681.23, 19681.23, 19681.23, 19681.23, 28916.73, 30416.73, 30416.73, 30416.73, 30435.72, 30435.72, 30435.72, 30435.72, 30435.72, 30435.72, 30435.72, 30435.72, 30435.72, 30435.72, 30435.72, 30435.72, 30435.72];
我想要的如下:
[-12.66, 255.54, 304.53, -959.97, 19590.03, 19681.23, 19681.23, 19681.23, 19681.23, 19681.23, 19681.23, 19681.23, 19681.23, 19681.23, 28916.73, 30416.73, 30416.73, 30416.73, 30435.72, 30435.72, null, null, null, null, null, null, null, null, null, null, null];
請注意,我將始終將尾隨值設為空。
uj5u.com熱心網友回復:
所以,檢查是否curr是null.
const array1 = [-12.66, 268.2, 48.99, -1264.5, 20550, 91.2, 0, 0, 0, 0, 0, 0, 0, 0, 9235.5, 1500, 0, 0, 18.99, 0, 0, null, null, null, null, null, null, null, null, null, null];
let resultArray = [];
array1.reduce(function(acc, curr, index) {
const sum = acc curr;
if (curr === null) {
resultArray[index] = null;
} else {
resultArray[index] = sum
}
return sum;
}, 0);
console.log(resultArray);
這樣,即使您在某些null值之后放置一個數字,它也會繼續累積總和
uj5u.com熱心網友回復:
你只需要像這樣修改一點你的代碼:
array1.reduce(function (acc, curr, index) {
return resultArray[index] = curr !== null ? acc curr : null
}, 0);
uj5u.com熱心網友回復:
您可以關閉總和并添加直到值 is null。
const
data = [-12.66, 268.2, 48.99, -1264.5, 20550, 91.2, 0, 0, 0, 0, 0, 0, 0, 0, 9235.5, 1500, 0, 0, 18.99, 0, 0, null, null, null, null, null, null, null, null, null, null],
result = data.map((sum => v => v === null ? null : sum = v)(0));
console.log(...result);
uj5u.com熱心網友回復:
解釋 null 后在索引的其余部分插入 null
const array1 = [-12.66, 268.2, 48.99, -1264.5, 20550, 91.2, 0, 0, 0, 0, 0, 0, 0, 0, 9235.5, 1500, 0, 0, 18.99, 0, 0, null, null, null, null, null, null, null, null, null, null];
let resultArray = [];
let isNullInterpreted = false;
const output = array1.reduce(function (acc, curr, index) {
isNullInterpreted = isNullInterpreted || curr == null;
return resultArray[index] = isNullInterpreted ? null : acc curr;
}, 0);
console.log(resultArray);
console.log(output);
解釋 null 后停止迭代回圈
const array1 = [-12.66, 268.2, 48.99, -1264.5, 20550, 91.2, 0, 0, 0, 0, 0, 0, 0, 0, 9235.5, 1500, 0, 0, 18.99, 0, 0, null, null, null, null, null, null, null, null, null, null];
let resultArray = [];
let isNullInterpreted = false;
const output = array1.reduce(function (acc, curr, index) {
isNullInterpreted = isNullInterpreted || curr == null;
if (!isNullInterpreted) {
resultArray[index] = acc curr;
}
return resultArray[resultArray.length - 1]
}, 0);
console.log(resultArray);
console.log(output);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/445713.html
