簡體   English   中英

用JavaScript將項目從一個數組交換到另一個數組的優雅方法?

[英]Elegant way to swap items from one array to another in JavaScript?

有沒有一種優雅的方法可以使用香草JS將項目從一個數組交換到另一個數組?

如果您要為運動隊構建簡單的應用程序,則此功能將起作用。 在給定的團隊中,當您從起始陣容(array1)換出一名球員時,您將其替換為替代陣容(array2)的一名球員。

選擇之后,將更新陣列,從陣列2中選擇的陣列項目現在將出現在陣列1中,反之亦然。

偽代碼示例:
首發陣容=鮑勃,蘇珊,凱文,傑克,蒂姆
Substitude陣容=喬治,史蒂夫,瑪莎

淘汰球員:傑克
球員潛入:馬莎



結果:
首發陣容:鮑勃,蘇珊,凱文,瑪莎,蒂姆
替補陣容:喬治,史蒂夫,傑克

我找到了一種優雅的解決方案,可以使用原型方法在單個數組中交換兩個項目的順序 但是,如果您要處理兩個不同數組中的兩個項目,則此方法將無效。

我的問題不是解決方案是否可行(當然是可行的),而是解決問題的最佳方法是使用干凈,精確和優雅的代碼,而無需使用大量的for-loop意大利面條。

沒有魅力,可能缺少您的情感-但可以兩行來做

 var Starting_Lineup = ["Bob", "Susan", "Kevin", "Jack", "Tim"]; var Substitute_Lineup = ["George", "Steve", "Martha"]; /* Player to sub out: Jack Player to sub in: Martha */ // JS Magic Activates! (Insert your ingenious code here.) Starting_Lineup[Starting_Lineup.indexOf("Jack")]="Martha"; Substitute_Lineup[Substitute_Lineup.indexOf("Martha")]="Jack"; /* Result: Starting Lineup: Bob, Susan, Kevin, Martha, Tim Substitute Lineup: George, Steve, Jack */ 

如果需要功能:

 var Starting_Lineup = ["Bob", "Susan", "Kevin", "Jack", "Tim"]; var Substitute_Lineup = ["George", "Steve", "Martha"]; /* Player to sub out: Jack Player to sub in: Martha */ [Starting_Lineup,Substitute_Lineup]=swap_player(Starting_Lineup,Substitute_Lineup,"Jack","Martha"); function swap_player(team_1,team_2,player_1,player_2){ team_1[team_1.indexOf(player_1)]=player_2; team_2[team_2.indexOf(player_2)]=player_1; return [team_1,team_2]; } 

您可以獲取所需元素的索引並使用解構賦值

 var swap = (a1, a2, v1, v2) => { var i = a1.indexOf(v1), j = a2.indexOf(v2); [a1[i], a2[j]] = [a2[j], a1[i]]; }, array1 = ['Bob', 'Susan', 'Kevin', 'Jack', 'Tim'], array2 = ['George', 'Steve', 'Martha']; swap(array1, array2, 'Jack', 'Martha') console.log(array1); console.log(array2); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM