Javascript 如何使用lodash将数组元素从一个位置交换到另一个位置?

Javascript 如何使用lodash将数组元素从一个位置交换到另一个位置?,javascript,lodash,Javascript,Lodash,如何使用lodash库在JavaScript中将数组元素从一个位置交换到另一个位置? 大概是这样的: _.swap(array, fromIndex, toIndex) //but this is not working 这是在线lodash测试仪,在那里我测试了一些方法,但没有一种有效 任何帮助都将不胜感激。谢谢 如果您只想交换数组中两个元素的索引位置,那么您可以使用本机JavaScript快速实现这一点。下面是一个使用现代ES6+语法的解决方案: const swapArrayLocs=(

如何使用lodash库在JavaScript中将数组元素从一个位置交换到另一个位置? 大概是这样的:

_.swap(array, fromIndex, toIndex) //but this is not working
这是在线lodash测试仪,在那里我测试了一些方法,但没有一种有效


任何帮助都将不胜感激。谢谢

如果您只想交换数组中两个元素的索引位置,那么您可以使用本机JavaScript快速实现这一点。下面是一个使用现代ES6+语法的解决方案:

const swapArrayLocs=(arr,index1,index2)=>{
[arr[index1],arr[index2]=[arr[index2],arr[index1]]
}
如果您从未见过像我上面使用的那样的分解任务,您可以。当您需要交换两个变量(或者在本例中,两个数组索引)的值时,这是解决此类问题的一种特别有用的技术

为了防止您需要支持传统浏览器,如Internet Explorer,这里有一个ES5版本,在语法上更详细一些:

var-swapArrayLocs=函数(arr、index1、index2){
var-temp=arr[index1];
arr[index1]=arr[index2];
arr[index2]=温度;
}
您还可以将a(而不是上述)与以下任一方法结合使用:

函数swapArrayLocs(arr、index1、index2){
var-temp=arr[index1];
arr[index1]=arr[index2];
arr[index2]=温度;
}
上述所有实现您正在寻找的功能的方法都将以相同的方式使用——就像任何其他函数调用一样。您将调用该函数,然后将要影响的数组和要交换其值的两个数组索引传递给它

const myArray = ["a", "b", "c", "d", "e", "f"];

swapArrayLocs(myArray, 0, 4);

// myArray is now: ["e", "b", "c", "d", "a", "f"]
这将操作数组,但我编写的函数不会返回任何内容。如果您希望更改,您可以在末尾添加一个return语句,以便将
arr
传递回,或者可能添加一个包含已交换的两个元素的数组。。。无论您的特定用例需要什么。

方法1。 As Array.splice将在新数组中返回删除的值,因此您可以按如下方式写入:

const swapArrayLoc = (arr, from, to) => {
    arr.splice(from, 1, arr.splice(to, 1, arr[from])[0])
}
方法2。 使用临时变量

const swapArrayLoc = (arr, from, to) => {
    let temp = arr[to];
    arr[to] = arr[from];
    arr[from] = temp;
}

注意:这些方法将变异原始数组,如果不想变异,请复制到数组。

是否希望数组项彼此交换位置?就像在你的例子中,用fromIndex代替toIndex,用toIndex代替fromIndex?@StephenMIrving是的!有什么方法可以通过使用lodash来实现吗?我在下面创建了一个使用原生JS的实现。出于某种原因,您需要在答案中使用lodash吗?还是使用普通的香草javascript呢?谢谢!这真的很有帮助。虽然我在找lodash,但这回答了我的问题。