乐趣区

关于javascript:js面试题总结及答案

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 个地位)

后续会持续补充。。。。

退出移动版