想象一個專案串列:
const data = [0, 1, 2, 3, 4, 5]
一個變數代表主要專案:
const initialIndex = 1;
另一個變數,也將在“主要專案”后面收集的額外元素的數量。
const extraCount = 2;
因此,例如,如果我將方法稱為“演算法”,如下所示:
function algorithm(data, initialIndex, extraCount) { ... }
console.log(algorithm(data, 2, 1));
它會回傳我[1, 2]// 初始索引和它后面的第一個元素
或者,例如,如果我再次打電話給
console.log(algorithm(data, 4, 3));
它會回傳我[1, 2, 3, 4]// 初始元素和它后面的 3 個專案
我怎樣才能以簡單的方式修復這個用例
console.log(algorithm(data, 1, 2)); // Negative index...
但是......我需要至少回傳可能的專案。
我的意思是:
因為console.log(algorithm(data, 1, 2));我得到[0, 1]// 初始索引,以及之前的第一項(不是兩個,因為第二項的索引為負)
因為console.log(algorithm(data, 2, 5));我得到[0, 1, 2]
因為console.log(algorithm(data, 0, 10));我得到[0]
因為console.log(algorithm(data, 3, 7));我得到[0, 1, 2, 3]
編輯
這是我嘗試過的
const data = [0, 1, 2, 3, 4];
const initialIndex = 2;
const extraCount = 2;
const start = initialIndex - extraCount >= 0 ? initialIndex - extraCount : initialIndex;
const end = initialIndex 1;
console.log(data.slice(start, end));
uj5u.com熱心網友回復:
你說得對。只需更換initialIndex用0在其他條件
const data = [0, 1, 2, 3, 4];
let func = (initialIndex,extraCount) => {
const start = initialIndex - extraCount >= 0 ? initialIndex - extraCount : 0;
const end = initialIndex 1;
console.log(data.slice(start, end));
};
func(2,2);
func(1,2);
func(3,7);
注意:還有很多其他方法可以做到,但這是您想要的方法,所以我只是指出了這個問題
uj5u.com熱心網友回復:
您可以使用slice(-count)從陣列末尾回傳元素,如下所示:
if (extraCount > initialIndex) {
return [
// This will return elemnts from beginning of array up to initialIndex
...data.slice(0, initialIndex),
// This will return the missing elements looped from the other side of array
...data.slice(extraCount - initialIndex)
];
}
您還應該將其他健全性檢查合并到您的代碼中,或者例如,元素總數不應超過陣列長度等。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/321833.html
標籤:javascript 算法
上一篇:這段代碼的時間復雜度是多少?
