javascript - 在 JavaScript 中将项目从一个数组交换到另一个数组的优雅方法?

标签 javascript arrays oop object prototype

有没有一种优雅的方法可以使用 vanilla JS 将项目从一个数组交换到另一个数组?

如果您正在为运动队构建一个简单的应用程序,则此功能会起作用。在给定的球队中,当您从首发阵容 (array1) 中换出一名球员时,您会用替补阵容 (array2) 中的一名球员替换他们。

一旦做出选择,数组就会更新,从数组 2 中选择的数组项现在出现在数组 1 中,反之亦然。

Pseudocode Example:
Starting Lineup = Bob, Susan, Kevin, Jack, Tim
Substitude Lineup = George, Steve, Martha

Player to sub out: Jack
Player to sub in: Martha

// JS Magic Activates! (Insert your ingenious code here.)

Result:
Starting Lineup: Bob, Susan, Kevin, Martha, Tim
Substitute Lineup: George, Steve, Jack

我找到了 swap the order of two items in a single array, using a prototype method 的优雅解决方案.但是,如果您处理两个不同数组中的两个项目,这将不起作用。

我的问题不是解决方案是否可行(当然可行),而是最好的方法是使用干净、精确和优雅的代码,而不需要对于一堆 for-loop 意大利面。

最佳答案

您可以获取所需元素的索引并使用 destructuring assignment .

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; }

关于javascript - 在 JavaScript 中将项目从一个数组交换到另一个数组的优雅方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48194204/

相关文章:

javascript - 在 JavaScript 的 if 中使用动态运算符

javascript - 除以 0 和 0.00

javascript - 如何在 jQuery 中制作多语言键盘?

javascript - 检查数组是否具有另一个数组的键值对

javascript - 如果 JavaScript 字符串以连字符开头,则计算出现次数

javascript从字符串动态创建多维数组

Android 菜单代码位于单独的类文件中

javascript - 在 jQuery 中链接时 CSS 属性不起作用

oop - 区分代码中的拥有对象和引用对象?

java - 如何修复 Java 中的 UDP 服务器?