数组的各种操作
##数组简介
- 数组是对象的一种
- 数组对象是使用单独的变量名来存储一系列的值,
##数组的创建
var a=[];或者
var a=new Array();
##数组的各种方法
concat()
用于数组的合并,两个或者多个数组的合并。
var a=[1,2,3];
var b=[4,5,6];
var c=[7,8,9];
var d=a.concat(b);//两个数组合并
console.log(d);//(6) [1, 2, 3, 4, 5, 6]
var e=a.concat(b,c);//多个数组合并
console.log(e);//(9) [1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log(a);//(3) [1, 2, 3]不会改变原来的值,只是返回合并的值
join()
用于将数组以一种字符连接成字符串。
Array.join();
var a=[1,2,3];
var b=a.join('-');//不会改变原来的值,即不会改变a的值,知识返回处理好的字符串。
console.log(a,b);//(3) [1, 2, 3] "1-2-3"
var c=a.join();//如果括号中不写则默认使用’,‘逗号进行连接。
console.log(c);//1,2,3
pop
用于删除数组的最后一个元素,改变原来的是数组,返回删除的元素。
Array.pop();
var a=[1,2,3,4,5,6,7,8,9];
var b=a.pop();//会改变原来的数组
console.log(a,b);//(8) [1, 2, 3, 4, 5, 6, 7, 8] 9返回删除的元素
shift
删除并返回第一个元素,会改变原来的元素。
Array.shift();
var a=[1,2,3,4,5,6,7,8];
var b=a.shift();//返回删除的值,改变原来的值
console.log(a,b);//(7) [2, 3, 4, 5, 6, 7, 8] 1
push
向数组的末尾添加一个或更多元素,并返回新的长度。
Array.push();//括号中填写要添加的数据,可以是字符串、数字、数组、对象等
var a=[1,2,3];
var b=a.push(1);console.log(a,b);//(4) [1, 2, 3, 1] 4
var c=a.push([3,4]);
console.log(a,c);//(5) [1, 2, 3, 1, [3,4]] 5返回新数组的长度。
unshift
向数组的开头添加一个或更多元素,并返回新的长度。
Array.unshift()//括号中填写要添加的数据,可以是字符串、数字、数组、对象等
var a=[1,2,3,4,5];
var b=a.unshift(1);
var c=a.unshift([6,7]);
console.log(a,b,c);//[[6.7], 1, 1, 2, 3, 4, 5] 6 7返回新数组的长度
splice()
splice() 方法向/从数组中添加删除项目,然后返回被删除的项目。
arrayObject.splice(index,howmany,item1,.....,itemX)//index数组的索引,如果大于数组长度说明是添加。howmany删除的数量,item1想数组添加的新项目
slice()
slice() 方法可从已有的数组中返回选定的元素。
Array.slice(start,end)//填写索引值
var a=[1,2,3,4,5,6,7];
var b=a.slice(3,6);
console.log(a,b);//(7) [1, 2, 3, 4, 5, 6, 7] (3) [4, 5, 6]不包含索引值后面的元素,从0开始
sott()
sort() 方法用于对数组的元素进行排序。如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较
Array.sort()//用法
var a=[3,2,55,44,33,2567];
var b=a.sort(function(a,b){return a-b});
console.log(a,b);//(6) [2, 3, 33, 44, 55, 2567] (6) [2, 3, 33, 44, 55, 2567] 会改变原来的值,返回的也是排完序的值。 从小到大排序
var b=a.sort(function(a,b){return b-a});
console.log(a,b);(6) [2567, 55, 44, 33, 3, 2] (6) [2567, 55, 44, 33, 3, 2]//从大到小排序
toString
toString() 方法可把数组转换为字符串,并返回结果。
Array.toString();//数组之间使用‘,’连接
var a=[1,2,3,4,5];
var b=a.toString();
console.log(a,b);//(5) [1, 2, 3, 4, 5] "1,2,3,4,5" 返回的是使用‘,’连接的字符串 并不会改变原来的值
some
some() 方法用于检测数组中的元素是否满足指定条件
some() 方法会依次执行数组的每个元素:
如果有一个元素
满足条件,则表达式返回true , 剩余的元素不会再执行检测。
如果没有满足条件的元素,则返回false。
注意: some() 不会对空数组进行检测。
注意: some() 不会改变原始数组。
array.some(function(currentValue,index,arr),thisValue)
currentValue
必须:当前元素arr
当前元素的数组对象thisValue
对象作为该执行回调时使用,传递给函数,用作 “this” 的值。如果省略了 thisValue ,“this” 的值为 “undefined”.
//
//index 当前元素
//arr 当前元素的数组对象
//thisValue 对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined".
let arr=[3,4,5,6,7,8,10];
let b=arr.some((row)=>{
return row>8});
console.log(arr,b);//[3, 4, 5, 6, 7, 8, 10] true
every
- 进行数组循环操作,当
所有的条件
都满足,返回true
,否则false
array.some(function(currentValue,index,arr),thisValue)
currentValut
,当前值,必填index
索引值arr
当前元素的数组对象thisValue
可选。对象作为该执行回调时使用,传递给函数,用作 “this” 的值。
如果省略了 thisValue ,“this” 的值为 “undefined”
let arr = [3,4,5];
let result = arr.every((row,index,arr)=>{return row >3 })
// row:3,index:0,arr:[3,4,5]就是原始数据,因为当前第一个就不满足,所以只是循环了一次。
//执行顺序是从开始进行,如果前面的符合条件就会向下执行,如果不符合就会输出false并且停止执行。
filter
返回数组中满足回调函数中指定的条件的元素
var new_array = arr.filter(callback(element[, index[, array]])[, thisArg])
-
参数
参数 | 定义
-------|--------
array1|必须,一个数组对象
callbbackfn|必须,一个接受最多三个参数的函数,对于数组中的每一个元素,filter都会调用一次callbackfn
thisArg|可选,可在 callbackfn 函数中为其引用 this 关键字的对象。如果省略 thisArg,则 undefined 将用作 this 值。 -
返回值
一个包含回调函数为其返回 true 的所有值的新数组。如果回调函数为 array1 的所有元素返回 false,则新数组的长度为 0。
//正确写法
var a=[1,2,3,4,5,6,7,8,9];
var b=a.filter(arr=>arr>4);
console.log(a,b);//(9) [1, 2, 3, 4, 5, 6, 7, 8, 9] (5) [5, 6, 7, 8, 9]
//错误写法
var a=[1,2,3,4,5,6,7,8,9];
var b=a.filter((arr)=>{arr>4})console.log(a,b);
- 在filter中不可以使用带()的箭头函数。
- 不需要写return
some
和every
总结
some
是全部
正确才会返回true
,只要有一个不符合就不会向下执行,直接返回false
。every
是有一个
符合就返回true
,只要有一个符合就不会向下执行,全部
的符合条件,才算都符合返回false
。