目录
数组(Array)的方法
toLocaleString()方法
toLocaleString() 返回一个字符串表示数组中的元素。数组中的元素将使用各自的 toLocaleString 方法转成字符串,这些字符串将使用一个特定语言环境的字符串(例如一个逗号 “,”)隔开。
语法:
arr.toLocaleString([locales[,options]]);
返回值和toString()一样
shift()方法
用于把数组第一个元素从中删除,并返回第一个元素的值
语法:
arrayObject.shift();
直接在原数组上面修改,不会创建新数组
如果数组时空,进行shift()操作,会返回undefined
unshift()方法
向数组的开头添加入一个或更多元素,返回新长度
语法:
arrayObject.unshift(newelement1,newelement2,…,newelementX)
和shift()方法一样,不创建新数组,直接在原数组上面修改
sort()方法
默认按照升序排列,但实际上,sort()方法会将每一项进行toString()转型方法,然后进行字符串的第一项的Unicode码进行比较,所以一般情况下的排序很有可能会产生错误
所以想要得到想要的结果就要传入一个比较函数
比较函数的规则:
比较函数应该有两个参数
- 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。(不会互换)
- 若 a 等于 b,则返回 0。
- 若 a 大于 b,则返回一个大于 0 的值。(将a,b互换)
返回数组,是直接在原数组上进行排序修改的,不生成副本
var arr = [12, 5, 3, 7, 8];
function compare(a, b) {
return a - b;
}
arr.sort(compare);
console.log(arr);//3,5,7,8,12
如果要改为降序排列,直接早return那里一改就好了
把compare比较函数传入,每个a,b都是直接从数组里面传入的
concat()方法
将最开始的数组与里面的参数拼接,返回新数组
slice()方法
第一个参数是表示从哪个位置开始,第二个参数是表示在哪个位置结束,但是实际返回的内容不包括最后的那个位置的内容。
如果没有第二个参数,那就从第一个参数开始返回到数组结尾
不会影响原数组
splice()方法
该方法是向数组中添加或删除项目,然后返回被删除的项目。如果没有数组被删除,那就返回空字符串
会改变原始数组
以下就是这个方法的参数
利用这个方法可以实现以下三种想要的效果
-
删除
直接设置前两个属性值(从哪里开始并且删除多少个值) -
插入
设置开始的位置,将第二个参数设置为0(表示删除0个元素),后续填写想要插入的数值,那就会将想要的数值进行插入操作 -
替换
就是在三个参数及以上情况的时候,删除与插入个数不同数量的项,然后就会实现替换
indexOf()和lastIndexOf()方法
都是两个参数,第一个参数是想要搜索的值,第二个值是表示从数组的哪里开始进行全面搜索
里面搜索进行的是比较是全等比较,不会存在隐式类型转换
找到会返回着到的位置,没找到会返回-1
var person = {
name : 'li'
};
var people = [{
name : 'li'}];
var morePeople = [person];
console.log(people.indexOf(person));//-1
console.log(morePeople.indexOf(person));//0
为什么第一条会输出-1而第二条输出0?
因为在js中的比较中,indexOf是==比较,这种时候再比较对象是引用值的时候,比较的是引用值的地址,也就是比较地址指针
准确来说,在进行引用值的比较的时候,无论是两个等号的比较或者是三个等号的比较都是比较地址指针
所以第一条输出-1,第二条输出0
如果是原始值和引用值进行比较,那么是将引用值转换为原始值,然后进行值比较,当然在这种情况下,进行的只有两个等号的比较,三个等号的比较直接是false
迭代方法(every,filter,forEach,map,some)
在往这些方法里面可以传入一个函数,函数拥有三个参数,分别是数组项的值,该项在数组中的位置,数组对象本身
-
every()
每一项都返回true的时候才会返回true 一假即假
三个参数和forEach一样 -
filter()
将在给定函数返回true的每一项组成一个新数组,然后返回新数组(可以查询有些符合条件的数组项)筛选
三个参数和forEach一样
return 不会终止迭代 -
forEach()
没有返回值,三个参数分别是value,index,arr,数组的值,数组的索引,数组本身
return 不会终止迭代 -
map()
返回每次函数调用的结果组成的数组(适合创建包含的项与另一个数组一一对应的数组)
三个参数和forEach一样 -
some()
只要存在一项是true,就会返回true,然后停止执行,三个参数和forEach一样 一真即真
归并方法(reduce,reduceRight)
方法内部有四个参数,前一个值,现在的值,当前项索引,数组对象
在第一次的时候,当前项直接就是第1位上的值,前一个值是第0位上的值,此后前一项都是前面值的累加和
reduceRight就是进行方法是从反方向进行的
from()方法
将类数组或可遍历的对象转换为真正的数组
第一个参数就是伪数组
var obj = {
0 : 9,
1 : 3,
2 : 7,
length : 3
}
var arr = Array.from(obj);
console.log(obj);
console.log(arr);
还可以接受第二个参数,第二个参数是函数,可以对数组进行加工处理,类似于map
var obj = {
0 : 9,
1 : 3,
2 : 7,
length : 3
}
var arr = Array.from(obj, item => item*2);
console.log(obj);
console.log(arr);
find()方法
用于找出第一个符合条件的数组成员,参数就是一个筛选符合条件的函数,这个函数返回布尔值,如果最后没有找到,就返回undefined
findIndex()方法
查找第一个符合条件的成员的索引,没找到返回-1,参数和find一样
includes()方法
判断某个数组是否含有给定的值,返回布尔值
let arr = [1, 2, 3];
console.log(arr.includes(2));//true
console.log(arr.includes(4));//false