如何從陣列的開頭洗掉元素并將它們附加到末尾?

const ImageArray = [i1,i2,i3,i4,i5]
const clickHandler = (index: number) => {
let start = ImageArray.slice(index)
let end = ImageArray....
let result = start.concat(end)
return result
}
{ImageArray.map((image, index) => (
<div
onClick={() => clickHandler(index)}
key={index} style={{backgroundImage: 'url(' image ')'}}
/>
))}
PS 沒必要使用 slice 方法
uj5u.com熱心網友回復:
x 是點擊的索引:
const arr = [0,1,2,3,4];
const newArr = [...arr.slice(x-1), ...arr.slice(0, x-1)]
uj5u.com熱心網友回復:
你可以做:
const arr = ['i1','i2','i3','i4','i5']
const clickHandler = i => [...arr.slice(i), ...arr.slice(0, i)]
console.log('i3:', clickHandler(2)) // Clicked: 'i3'
uj5u.com熱心網友回復:
您的函式旨在回傳一個新陣列,但您呼叫該函式的地方并沒有對回傳的值做任何事情。
我假設你想要mutate ImageArray。在這種情況下splice,用于洗掉第一部分,并push在末尾附加相同的部分:
const clickHandler = (index: number) => {
ImageArray.push(...ImageArray.splice(0, index));
};
uj5u.com熱心網友回復:
你可以試試拼接
const clickHandler = (index) => ImageArray.push(...ImageArray.splice(0, index))
如果您正在使用狀態并且不想改變原始陣列,請嘗試傳播 ImageArray 以使其不進行深度復制
const clickHandler = (index) => {
const arrCopy = [...ImageArray];
arrCopy.push(...arrCopy.splice(0, index));
return arrCopy;
}
uj5u.com熱心網友回復:
array.splice(index).concat(array.splice(array.length - index))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/497384.html
標籤:javascript 反应 打字稿
上一篇:輸出中的額外行
下一篇:創建一個深度嵌套的物件
