常用方法总结

JSON

parse(): 以文本字符串形式接受 JSON 对象作为参数,并返回相应的对象。

stringify(): 接收一个对象作为参数,返回一个对应的 JSON 字符串。

口语化理解:JSON.stringify()将不同数据类型的数据转为JSON字符串,JSON.parse()将JSON数据转换为他原本的数据类型。

JSON的数格式,首先必须是一个字符串,其次属性必须也是字符串形式,值可以是任意形式。
'{"student": "小米","id":18}'
如果一条数据是JSON形式,我们可以直接用parse将他外围的引号和属性的引号去掉,返回一个新类型的数据。

Object

Object.assign():通过复制一个或多个对象来创建一个新的对象。

Object.entries():返回给定对象自身可枚举属性的 [key, value] 数组。

Object.is():比较两个值是否相同。所有 NaN 值都相等(这与== 和 === 不同)。

Object.keys():返回一个包含所有给定对象自身可枚举属性名称的数组。

Object.values():返回给定对象自身可枚举值的数组。

var obj = { foo: 'bar', baz: 42 };
console.log(Object.values(obj)); // ['bar', 42]

# 如果对象属性是 Number 则从小到大输出
var an_obj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.values(an_obj)); // ['b', 'c', 'a']

console.log(Object.values('foo')); // ['f', 'o', 'o']

Math

Math.floor() 函数总是返回小于等于一个给定数字的最大整数。(向下取整)

Math.max() 函数返回作为输入参数的最大数字,如果没有参数,则返回 -Infinity

Math.min() 函数返回作为输入参数的数字中最小的一个,如果没有参数,则返回 Infinity

Math.random() 函数返回一个浮点数,伪随机数在范围从0 到小于1,也就是说,从 0(包括 0)往上,但是不包括 1(排除 1),然后您可以缩放到所需的范围。实现将初始种子选择到随机数生成算法;它不能被用户选择或重置。

Math.round() 函数返回一个数字四舍五入后最接近的整数。

Math的妙用

🥀四舍五入保留两位小数

方法一:使用Math.round()方法+除法

Math.round((3.6666)*100)/100 //3.67

方法二:直接使用数字类型自带的方法toFixed(n)

let num = 3.66666
num.toFixed(2) //3.67

Array

1.join (原数组不受影响)

该方法可以将数组里的元素,通过指定的分隔符,以字符串的形式连接起来。
返回值:返回一个新的字符串

//将数组用 - 符号连接起来

let arr = [1,2,3,4,5];
let str = arr.join('-');
console.log(str)//str = 1-2-3-4-5;

join('拼接符号'),拼接符号可以是任意值(代码,表情,符号 ...)

2.split (原数组不受影响)

该方法是用过指定的分隔符,将字符串分割成数组。
返回值:返回一个新的数组

let str = 'wqz-ttj';
let arr = str.split('-');
console.log(arr);// arr=['wqz','ttj'];

let arr = str.split('');
console.log(arr);// arr=['w','q','z','t','t','j'];

数组的增删操作(直接改变原数组)

3.push

该方法可以在数组的最后面,添加一个或者多个元素
结构: arr.push(值)
返回值:返回的是添加元素后数组的长度.

4.pop

该方法可以在数组的最后面,删除一个元素
结构: arr.pop()
返回值:返回的是刚才删除的元素.

5.unshift

该方法可以在数组的最前面,添加一个或者几个元素
结构: arr.unshift(值)
返回值: 返回的是添加元素后数组的长度

6.shift

该方法可以在数组的最前面,删除一个元素
结构: arr.shift()
返回值: 返回的是刚才删除的元素.
数组的翻转和排序(改变数组)

7.reverse 翻转数组

结构:arr.reserse(),修改的是原数组。

8.sort

该方法可以对数组进行排序,修改的是原数组。

let arr = [1,3,5,2,4,23,122,34];
//没有参数:时按照首字符的先后排序
arr.sort()//arr=[1,122,2,23,3,34,4,5];
//有参数
arr.sort(function(a,b){
	return a-b;//从小到大排序
	return b-a;//从大到小排序
})

数组的拼接与截取(原数组不受影响)

9.concat

该方法可以把两个数组里的元素拼接成一个新的数组

返回值: 返回拼接后的新数组

let arr1 = [1,2,3];
let arr2 = [4,5,6];
let arr = arr1.concat(arr2);//arr = [1,2,3,4,5,6];
arr1.push(arr2);//arr1 = [1,2,3,[4,5,6]];

该方法和push的区别: push是直接把后一个元素原封不动的添加到第一个数组的后面;

10.slice 截取 出来

该方法可以从数组中截取指定的字段,返回出来
返回值:返回截取出来的字段,放到新的数组中,不改变原数组

结构1: arr.slice(start,end) ;从start下标开始截取,一直到end结束,不包括end

let arr = [0,1,2,3,4,5,6,7];
let newArr = arr.slice(0,3)//newArr = [0,1,2];

结构2: arr.slice(start) ;从start下标开始截取,一直到最后

let arr = [0,1,2,3,4,5,6,7];
let newArr = arr.slice(2)//newArr = [2,3,4,5,6,7];

结构3: arr.slice( ) ;全部截取

let arr = [0,1,2,3,4,5,6,7];
let newArr = arr.slice()//newArr = [0,1,2,3,4,5,6,7];

删除或增加元素(任意在任何位置,直接改变原数组,返回的是被删除元素组成的新数组或者空数组)

11.splice

结构1: arr.splice(start,deletedCount) 纯删除
从start下标开始,删除几个

结构2: arr.splice(start,deletedCount,item) 替换
从start下标开始,删除几个,并在该位置添加item

结构3: arr.splice(start,0,item) 纯添加
从start下标开始,删除0个,并在该位置添加item,start开始全部往后移动

let arr = [1,2,6,7,8];
arr.splice(2,0,3,4,5);//arr = [1,2,3,4,5,6,7,8];

查找元素在数组中出现的位置

12.indexOf

该方法用来查找元素在数组中第一次出现的位置

结构: arr.indexOf(元素)

特殊用法:

(1) arr.indexOf (ele,fromIndex),从fromIndex这个下标开始,元素第一次出现的位置

用来判断元素是否存在于数组中!

if (arr.indexOf(ele) === -1){//说明元素不存在!!
	console.log('元素不存在!)
} else {
	console.log(' 元素存在! ')
}

13.lastIndexOf()

该方法用来查找元素最后一次在数组中出现的位置

14.includes()

数组是否包含指定值。返回值为true 或 false

// 参数1:包含的指定值
[1, 2, 3].includes(1);    // true

// 参数2:可选,搜索的起始索引,默认为0
[1, 2, 3].includes(1, 2); // false
 
// NaN 的包含判断
[1, NaN, 3].includes(NaN); // true

数组方法的巧妙运用

1.字符串翻转

const src = 'abcd'
// 将字符串分割成数组
const arrSrc = src.split('') //['a','b','c','d']
// 利用数组的reverse方法翻转数组
const chuange = arrSrc.reverse() //['d','c','b','a']
// 再利用数组的join方法将数组拼接成字符串
const newSrc = change.join('') //'dcba'

// 可缩写为
const newSrc = src.split('').reverse().join('')

ES6新增的遍历数组方法

1.forEach( )

该方法等同于for循环,没有返回值

用法:

arr.forEach(function(item,index,arr){
//里面的function是一个回调函数,
//item: 数组中的每一项;
//index:item 对应的下标索引值 (一般情况不用到)
//arr: 就是调用该方法的数组本身 (一般情况不用到)
})

2.for of

const array1 = ['a', 'b', 'c'];

for (const element of array1) {
  console.log(element);
}

// Expected output: "a"
// Expected output: "b"
// Expected output: "c"

3.map( )

映射,该方法使用和forEach大致相同,但是该方法有返回值,返回一个新数组,新数组的长度和原数组长度相等

//里面的function是一个回调函数,
//item: 数组中的每一项;
//index:item 对应的下标索引值 (一般情况不用到)
//arr: 就是调用该方法的数组本身 (一般情况不用到)

用法:
//基本函数
const arr = [1,2,3,4,5];
const res = arr.map(function(item,index,arr){
	return item*2;
})
//箭头函数
const res = arr.map(item =>item*2) //res[2,4,6,8,10]

4.filter( )

filter方法: 有返回值(返回一个新数组), 过滤出符合条件的元素

const arr = [1, 3, 5, 2, 4, 6];
//基本函数
const res = arr.filter(function(item, index) {
  return item % 2 === 0;
});
//箭头函数
const res = arr.filter(item => item %2 === 0)
console.log(res); //[2,4,6]

过滤出布尔类型为true的项

const arr = [0, "", false, 1, 3, 4];
const res = arr.filter(function(item, index) {
  return item;
});
console.log(res);

5.some

判断数组中有没有符合条件的项(只要有,就返回true),如果一个都没有,才返回false

const arr = [
  { name: "zs", age: 18},
  { name: "ls", age: 20},
  { name: "ww", age: 22}
];
// 基本函数
const res = arr.some(function(item) {
  return item.name === 'ww';
});
// 箭头函数
const res = arr.some(item =>item.name === 'ww')
console.log(res);

6.every

判断数组中所有的项是否满足要求,如果全都满足,才返回true,否则返回false

const arr = [
  { name: "zs", age: 18},
  { name: "ls", age: 20},
  { name: "ww", age: 22}
];
// 基本函数
const res = arr.every(function(item) {
  return item.age === 18;
});
// 箭头函数
const res = arr.every(item => item.age === 18)
console.log(res);

7.find

找到符合条件的项,并且返回第一项,修改这一项的数据就是修改原数组数据

const arr = [
  { id: 3, name: "ls", done: false },
  { id: 1, name: "zs", done: true },
  { id: 2, name: "ww", done: true }
];
// 基本函数
 const res = arr.find(function(item) {
   return item.name === zs;
 });
 // 箭头函数
 const res = arr.find(item => {
   return item.name === zs;
 });
 console.log(res); // { id: 1, name: "zs", done: true }

8.findIndex

找到符合条件的项,并且返回第一个的下标

const arr = [
  { id: 3, name: "ls", done: false },
  { id: 1, name: "zs", done: true },
  { id: 2, name: "ww", done: true }
];
var res = arr.findIndex(function(item) {
  return item.done;
});
console.log(res);

9.reduce

1.求和计算

*第一次:pre–>1 next–>2 index–>1
pre+next=1+2=3
*第二次:pre–>3 next–>3 index–>2
pre+next=3+3=6
*第三次:pre–>6 next–>4 index–>3
pre+next=6+4=10
*第四次:pre–>10 next–>5 index–>4

const arr = [1,2,3,4,5] ;
// 基本函数
const newArr = arr.reduce(function(pre,next,index){
    return pre+next ;
     //pre+next=10+5=15
})
// 箭头函数
const newArr = arr.reduce((pre,item)=>pre+item)
console.log(newArr);

2.扁平化数组(拼接数组)

var arr2 = [[1,2,3],[4,5],[6,7]] ;
var new2 = arr2.reduce(function(pre,next,index){
	return pre.concat(next);	//前数组拼接后数组 .concat()
})
console.log(new2);

对象数组叠加计算

var arr3 = [
{price:10,count:1},
{price:15,count:2},
{price:10,count:3}
];
var new3 = arr3.reduce(function(pre,next,index){
	return pre+next.price*next.count;
},0)	//pre是数组的第一项,是一个对象,不能算术运算.我们在后面自定义pre为0,next为数组第一项
console.log(new3);

应用 : 利用数组拼接的方法实现遍历添加html元素
具有和for-in,map相同的功能

const res = data.reduce((pre, item) => {
        return pre + `
        <tr>
        <th scope="row">${item.id}</th>
        <td>${item.name}</td>
        <td>${item.age}</td>
        <td>${item.sex}</td>
        <td>${item.group}</td>
        <td>${item.phone}</td>
        <td>${item.salary}</td>
        <td>${item.truesalary}</td>
        <td>${item.province + item.city + item.county}</td>
        <td>
          <button type="button" class="btn btn-primary btn-sm">修改</button>
          <button type="button" class="btn btn-danger btn-sm">删除</button>
        </td>
      </tr> 
        `
    }, '')

最后一行的''就是自定义的第一项,下一次pre是上一次return的结果,res获取return的pre总和。

item是data数组的每一项,data是数组里面保存的是很多对象

热门相关:冉冉心动   锦庭娇   锦庭娇   富贵不能吟   修真界败类