亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將數組中的元素與各種數據類型交換

將數組中的元素與各種數據類型交換

慕雪6442864 2022-08-18 15:36:32
所以我四處尋找答案,我確實得到了一些見解,但無法完全找到所需的解決方案。我的問題是這樣的:因此,我有一個數字為1到5的鍵盤,當我選擇其中一個數字鍵時,它會將其移動到一個名為 的數組中,作為一個對象,如下所示:numberPad[  { number: 1, alias: 'one', checked: true, option: 'Option for key 1' },  { number: 4, alias: 'four', checked: true, option: 'Option for key 4' }]然后,它將 每個索引呈現為一個樣式卡,每個索引都是自己的可單擊下拉按鈕。單擊呈現的數字時,將看到一個單獨的按鈕列表(* 也是 1 到 5*),如果在該新按鈕列表中單擊了一個不在數組中的數字,則將數據推送到 。如果數字存在于 中,那么我需要在這里做一些事情...numberPadnumbernumberPadnumberPadnumberPad假設渲染了 1 和 4,我單擊數字 4 以打開按鈕列表。如果我現在選擇1,因為它已經在數據數組中,我只想在兩者之間交換值。option所以,我點擊4,按鈕列表打開,我點擊1,我希望我的數組看起來像這樣:[  { number: 1, alias: 'one', checked: true, option: 'Option for key 4' },  { number: 4, alias: 'four', checked: true, option: 'Option for key 1' }]我在到達那里時遇到了一些麻煩。我在SO上看到了許多關于交換函數的答案,但這些答案似乎將整個索引與另一個索引交換,因為我只想在單擊時交換一個鍵/值對。有沒有人在這里有任何建議,請...?提前致謝?。?
查看完整描述

2 回答

?
DIEA

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,請隨時關閉這個問題,請...


查看完整回答
反對 回復 2022-08-18
?
倚天杖

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)


查看完整回答
反對 回復 2022-08-18
  • 2 回答
  • 0 關注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號