1、JavaScript不借助第三个变量实现交换a,b变量值

1.ES6结构赋值语法,允许我们提取数组和对象的值,对变量进行赋值

[a,b] = [b,a];

2.直接交换a和b的变量值

a = [b,b=a][0];

3.先把a变成一个(对象,数组),最后赋值

a = {a:b,b:a};
b = a.b;
a = a.a;
a = [a,b];
b = a[0];
a = a[1];

4.让a先变成a与b的‘和’(也可以换成a和b的差)
‘和’减去b巧妙的得到了a的变量值赋予b
再通过‘和’减去a的值得到了b的值赋予a

a = a + b;
b = a - b;
a = a - b;
a = a - b;
b = a + b;
a = b - a;

5.通过底层位运算来进行交换变量值

a ^= b;
b ^= a;
a ^= b;
2. 数组去重

1.ES6方法:

Array.from(new Set([1,2,3,4,5,4,3,2]))    
[...new Set([1,2,3,4,5,4,3,2])]    
 //[1, 2, 3, 4, 5]

2.另一种方法

//定义数组
    var a=[1,2,3,4,2,3,8];
    function show(array){
      var num=[];  //定义空数组
      for(var i=0;i<array.length;i++){
        //用indexOf返回某个字符串在另一个字符串中首次出现的位置,
        if(num.indexOf(array[i])==-1){
          //如果没有找到,返回-1,向空数末尾添加
          num.push(array[i]);
        }
      }
      return num;//最后返回新数组
    }
3.数组降维:flat()

flat()可以将一个多维数组的深度转成一维(扁平化或称作降维),它有一个选填的参数,代表要转换的深度数字,预设为1(只展开一层放到一维数组里,如果是2,只展开2层放到一维数组里),如果深度有很多层,可使用Infinity来全部展开成一维数组。

let a = [1,2,[3],[4,[5,[6]]]];
let b = a.flat();
let c = a.flat(2);
let d = a.flat(Infinity);
console.log(b); // [1, 2, 3, 4, [5, [6]]]
console.log(c); // [1, 2, 3, 4, 5, [6]]
console.log(d); // [1, 2, 3, 4, 5, 6]
4.删除数组最后一个元素

pop()

pop()会移除数组的最后一个元素。

let a = [1,2,3,4,5,6,7,8];
a.pop();
console.log(a); // [1, 2, 3, 4, 5, 6, 7]
5.添加,删除数组固定位置元素

splice()

splice()可以移除或新增数列的元素,它包含了三个参数,第一个是要移除或要添加的序列号( 必填),第二个是要移除的长度( 选填,若不填则从第一个参数序号位置开始,后方的所有元素都会被移除,若设定为0则不会有元素被移除),第三个是要替换的内容( 选填 )

let a = [1,2,3,4,5,6,7,8];
a.splice(5,1);
console.log(a);
// [1, 2, 3, 4, 5, 7, 8] ( 6 被移除了 )

添加第三个参数就能够添加或替换元素。

let a = [1,2,3,4,5,6,7,8];
a.splice(5,1,100);
console.log(a);
// [1, 2, 3, 4, 5, 100, 7, 8] ( 6 被移除,100加到第5个位置 )
let b = [1,2,3,4,5,6,7,8];
b.splice(5,3,100,200,300);
console.log(b);
// [1, 2, 3, 4, 5, 100, 200, 300] ( 6,7,8 被移除,100,200,300 加到第 5,6,7 个位置 )
let c = [1,2,3,4,5,6,7,8];
c.splice(5,0,100);
console.log(c);
// [1, 2, 3, 4, 5, 100, 6, 7, 8] ( 沒有元素被移除,100 加到第 5 个位置 )

后续会继续补充。。。。


Fahrenheitzz
0 声望0 粉丝

发现问题,解决问题