2 回答
TA貢獻1820條經驗 獲得超3個贊
好吧,所以我覺得很傻。我已經有這個交換函數,我寫了:
swapArray = (input, i, j) => {
// do not mutate original array
const copyArray = input.slice(0);
[copyArray[i], copyArray[j]] = [copyArray[j], copyArray[i]];
return copyArray;
};
我所要做的就是像這樣擴展函數:
swapArray = (input, i, j, data) => {
// do not mutate original array
const copyArray = input.slice(0);
[copyArray[i][data], copyArray[j][data]] = [copyArray[j][data], copyArray[i][data]];
return copyArray;
};
然后,我所要為上面的數組所做的就是:numberPad
swapArray(numberPad, 0, 1, 'option')
它產生了正確的結果。不知道我怎么沒有馬上意識到這一點。Mods,請隨時關閉這個問題,請...
TA貢獻1828條經驗 獲得超3個贊
我假設對象將是您在問題中提到的數組的輸入,并相應地進行了更改。我正在根據要求改變相同的數據對象。希望此功能可以幫助您找到所需的內容。
let data = [
{
"number": 1,
"alias": "one",
"checked": true,
"option": "Option for key 1"
},
{
"number": 4,
"alias": "four",
"checked": true,
"option": "Option for key 4"
}
]
let swapOptions = (clickedObj, selectedObj) => {
const selectedObjIndex = data.findIndex(d => d.number === selectedObj.number)
if(selectedObjIndex === -1) {
data.push(selectedObj);
return;
}
clickedObjIndex = data.findIndex(d => d.number === clickedObj.number)
data.splice(clickedObjIndex, 1, {...clickedObj, option: selectedObj.option})
data.splice(selectedObjIndex, 1, {...selectedObj, option:clickedObj.option})
}
swapOptions(data[1], data[0])
console.log(data)
swapOptions(data[0], {
"number": 5,
"alias": "one",
"checked": true,
"option": "Option for key 5"
})
console.log(data)
添加回答
舉報
