我有一組數字和一些限制。
const a = [1,2,1,3,4,1,2];
const limit = 5;
將此陣列減少到索引以便從開始到索引的總和超過 的最javascript 方法是limit什么?
我弄完了
function findIndex(nums, limit) {
let s = 0;
for (let [index, num] of nums.entries()) {
s = num;
if (s >= limit) {
return index;
}
}
return nums.length;
}
findIndex([1,2,1,3,4,1,2], 5)
3
有沒有更簡潔的方法來使用reduce或其他方法來做到這一點?
uj5u.com熱心網友回復:
當您在索引之后,您可以查看使用陣列方法.findIndex()。下面的代碼sum為 中的每一項添加arr,然后檢查新的累sum加值是否大于或等于限制。如果是,則 findIndex 的回呼將回傳 true,為您提供索引。如果 findIndex 的回呼函式沒有找到任何值,它將導致-1,然后您可以在回傳之前檢查它以查看是否需要回傳陣列長度或實際索引:
const findIndex = (arr, limit) => {
let sum = 0;
const idx = arr.findIndex((num, idx) => (sum =num) >= limit);
return idx > 0 ? idx : arr.length;
}
console.log(findIndex([1,2,1,3,4,1,2], 5));
uj5u.com熱心網友回復:
由于您需要
1) index高達其sum是大于或等于limit
2)你想return在金額超過限制時盡早
那么你應該去舊學校for回圈。無需積累index和value使用nums.entries()
function findIndex(nums, limit) {
let sum = 0;
for (let i = 0; i < nums.length; i) {
sum = nums[i];
if (sum >= limit) return i;
}
// Return something explicitely to
// indicate that sum can't exceeds limit.
// You may return -1 if you like
}
console.log(findIndex([1, 2, 1, 3, 4, 1, 2], 5));
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/366744.html
標籤:javascript 数组 算法
