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 个位置 )
后续会继续补充。。。。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。