2 回答
TA贡献1820条经验 获得超2个赞
好吧,所以我觉得很傻。我已经有这个交换函数,我写了:
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)
添加回答
举报