如何使用lodash将数组元素从一个位置移动到另一位置?

时间:2019-12-18 19:07:01

标签: javascript lodash

如何使用lodash库在JavaScript中将数组元素从一个位置移动到另一个位置? 像这样:

@page "/"

<DxPopup @bind-PopupVisible="visible" />

@code {
    private bool visible;
}

这是在线lodash测试仪的link,我在其中测试了一些方法,但是没有一个方法

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

2 个答案:

答案 0 :(得分:5)

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

Canvas c = null;

如果您从未见过像我上面使用过的破坏性任务,则可以read about it here。当您需要交换两个变量(或在这种情况下,两个数组索引)的值时,这种技术特别有用。

仅在需要支持Internet Explorer等旧版浏览器的情况下,以下是ES5-版本,语法上有些冗长:

Canvas c = new Canvas();

您还可以通过以下两种方法之一使用function declaration(而不是上面的function expressions

const swapArrayLocs = (arr, index1, index2) => {
  [arr[index1], arr[index2]] = [arr[index2], arr[index1]]
}

以上所有用于实现所需功能的方法都将以相同的方式使用-就像其他任何函数调用一样。您将调用该函数,然后将要影响的数组以及要交换其值的两个数组索引传递给该函数。

var swapArrayLocs = function (arr, index1, index2) {
  var temp = arr[index1];

  arr[index1] = arr[index2];
  arr[index2] = temp;
}

这将操纵数组,但是我编写的函数不返回任何内容。如果您希望更改,则可以在最后添加一个return语句,以将function swapArrayLocs(arr, index1, index2) { var temp = arr[index1]; arr[index1] = arr[index2]; arr[index2] = temp; } 返回,或者可能包含一个包含被交换的两个元素的数组……对于您的特定用例,无论您需要什么。

答案 1 :(得分:1)

方法一。

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

注意:这些方式都会对原数组进行变异,如果不想变异,可以复制到数组中。