Javascript 类型脚本交换数组项

Javascript 类型脚本交换数组项,javascript,angular,typescript,destructuring,Javascript,Angular,Typescript,Destructuring,如何使用typescript交换两个元素 elements:elements[] =[]; elements.push(item1); elements.push(item2); elements.push(item3); elements.push(item4); elements[0] is item1 elements[3] is item4 如何在typescript中交换这些项目。我知道Javascript的方式,如下所示: a = [a[1],a[1]=a[0],a[2]]

如何使用typescript交换两个元素

elements:elements[] =[];
elements.push(item1);
elements.push(item2);
elements.push(item3);
elements.push(item4);


elements[0] is item1 
elements[3] is item4
如何在typescript中交换这些项目。我知道Javascript的方式,如下所示:

a = [a[1],a[1]=a[0],a[2]]
*使用临时变量的javascript示例*

var tmp = elements[0];
elements[0] = elements[3];
elements[3] = tmp;
但是在typescript中也有类似的api
array.swap()

[elements[0], elements[3]] = [elements[3], elements[0]];

它没有内置功能,但您可以轻松添加:

interface Array<T> {
    swap(a: number, b: number): void;
}

Array.prototype.swap = function (a: number, b: number) {
    if (a < 0 || a >= this.length || b < 0 || b >= this.length) {
        return
    }

    const temp = this[a];
    this[a] = this[b];
    this[b] = temp;
}

您可以在Javascript中的一行中完成这项工作(因此也可以在Typescript中完成,尽管在Typescript中您可以完成数组分解,如另一个答案所示)

对于基元类型(例如整数、字符串),您可以这样做来交换简单值a和b(积分):

如果有一个包含3个元素的数组,如下所示: a=[‘我’、‘你’、‘我们’]

你可以这样交换“我”和“你”:

a = [a[1],a[1]=a[0],a[2]]
因此,对于OP的4元素数组,要交换第一个(0)元素和最后一个(3)元素,您可以执行以下操作:

elements = [elements[3],elements[1],elements[2],elements[3]=elements[0]]

然而,这是不容易理解的代码,所以我不推荐它。使用tmp变量更简单。另外,由于必须指定原始数组的每个元素,因此它的性能或可维护性也不是很高。

这不是您想要的答案,但javascript示例似乎是通常的示例@Kapein我知道纯javascript是否简单,但我知道任何api都可以在typescript中这样做?你明白我的意思了吗?angular 2版本的这个?TS没有任何特殊的API。输入的是JS。这是正确的答案。请参见此处的数组销毁主题:在typescript中,它具有内置功能。这叫做数组分解-请参见Nina@rmcsharry那不一样。如果你不想创建一个新实例,而想在数组本身内部交换,那该怎么办?这正是Nina的回答所显示的-没有创建新实例,数据在数组本身内部交换。@rmcsharry你说得对,我的错,我没有太注意它。@rmcsharry好的,因此,现在我实际上有时间更彻底地重新审视这个问题和答案,OP要求提供“和api类似的array.swap()”,这就是我给他的。你可以争辩说,也许方法本身的实现应该使用解构方式,但这不是我回答的主要部分。
a = [a[1],a[1]=a[0],a[2]]
elements = [elements[3],elements[1],elements[2],elements[3]=elements[0]]