Js常用

时间:2021-7-3 作者:qvyue
数组转换为对象

数组转化为对象,一般首先想到的就是这种方法:

var obj = {};
var arr = ["1","2","3"];
for (var key in arr) {
    obj[key] = arr[key];
}
console.log(obj);  // {0: "1", 1: "2", 2: "3"}

比较简单快速的方法:

const arr = [1,2,3];
const obj = {...arr};
console.log(obj);  // {0: 1, 1: 2, 2: 3}
数组扁平化
[1, [2, 3]].flat(2) // [1,2,3]

[1, [2, 3, [4, 5]].flat(3) // [1,2,3,4,5]

[1, [2, 3, [4, [5]]]].toString().split(',') 

[1, [2, 3, [4, 5 [...]].flat(Infinity) // [1,2,3,4...n]

es6提供了一个新方法 flat(depth),参数depth,代表展开嵌套数组的深度,默认是1

数组最大值
Math.max(...[1,2,3,4]) //4
Math.max.apply(this,[1,2,3,4]) //4

Math.max()是 Math对象内置的方法,参数是字符串

判断是否包含值
[1, 2, 3].includes(4) //false

[1, 2, 3].indexOf(4) //-1 如果存在换回索引

[1, 2, 3].find((item)=>item===3)) //3 如果数组中无值返回undefined

[1, 2, 3].findIndex((item)=>item===3)) //2 如果数组中无值返回-1

includes()、 find()、 findIndex()是ES6的api。

拷贝数组

实现数组的拷贝有很多骚技巧
Array.slice

const arr = [1, 2, 3, 4, 5];
const copyArr = arr.slice();

展开操作符

const arr = [1, 2, 3, 4, 5];
const copyArr = [...arr];

Array.concat

const arr = [1, 2, 3, 4, 5];
const copyArr = arr.concat();

使用 Array 构造函数和展开操作符

const arr = [1, 2, 3, 4, 5];
const copyArr = new Array(...arr);
截断数组

如果有修改数组长度为某固定值的需求

let array = [0, 1, 2, 3, 4, 5];
array.length = 3;
console.log(array); // [0, 1, 2]
每一项设置值
[1, 2, 3].fill(false) // [false,false,false]

fill是ES6的方法

有一项满足
[1, 2, 3].some(item=>{return item>2}) //true

some是ES5的api,有一项满足返回 true

数组去重
方法一:
var arr = [5, 16, 7, 4, 15, 16, 44, 12, 5, 7]
var _arr = Array.from(new Set(arr))
console.log(_arr) // [5, 16, 7, 4, 15, 44, 12]
方法二:
var arr = [5, 16, 7, 4, 15, 16, 44, 12, 5, 7]
var temp = []
for (var i = 0; i 
方法三:
var arr = [1, 1, 3, 3, 5, 5, 4, 4, 6, 6];
arr = arr.filter((item, index) => {
     return arr.indexOf(item) == index;
});
console.log(arr); // [1, 3, 5, 4, 6]
短路运算

我们可以通过&&或||来简化我们的代码,比如:

if (isOnline) {
  postMessage();
}
// 使用&&
isOnline && postMessage();

// 使用||
let name = null || "森林";

原作地址【掘金】前端森林
开发中常用的一些js技巧,灵活的运用,会增强你解决问题的能力,也会对你的代码简洁性有很大的改观。

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。