ES5:
concat() 合并数组,并返回合并之后的数据
let arr1 = ["a","b","c"]
let arr2 = ["d","e","f"]
console.log(arr1.concat(arr2)) //["a","b","c","d","e","f"]
join() 使用分隔符,将数组转为字符串并返回新字符串
let fruits = ["a","b","c"];
console.log(fruits.join(" * ")); // a,b,c
pop() 删除最后一位,并返回删的数据
let arr = ["a","b","c","d"]
console.log(arr.pop()) // ['d']
shift() 删除第一位,并返回删除的数据
let arr = ["a","b","c","d"]
console.log(arr.shift()) // ['a']
unshift() 可向数组的开头添加一个或更多元素,并返回新的长度。
let arr = ["a","b"]
console.log(arr.unshift("c")) // 3 数组长度
console.log(arr) // ["c","a","b"]
push() 在最后一位新增一或多个数据,返回长度
let arr = ["a","b"]
console.log(arr.push("c")) // 3 长度
console.log(arr) // ["a","b","c"]
reverse() 反转数组,返回结果
let arr = [1,2,3,4]
console.log(arr.reverse()) // [4,3,2,1]
slice() 截取指定位置的数组,并返回
let arr = ["a","b","c","d"]
console.log(arr.slice(1)) // ["b","c","d"]
console.log(arr.slice(2,4)) // ["c","d"]
sort() 排序(字符规则),返回结果
let arr = [4,5,3,1,2]
console.log(arr.sort( ( a-b ) =>a-b)) //升序 [1, 2, 3, 4, 5]
console.log(arr.sort( ( a-b ) =>b-a)) //降序 [5, 4, 3, 2, 1]
splice() 通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容
let arr = ["a","b","c","d"]
//删除0个,返回空数组
console.log(arr.splice(2,0,"e")) // ["a","b","e","c","d"]
//删除一个,返回删除元素数组
console.log(arr.splice(2,1,"e")) // ["a","b","e","d"]
toString() 直接转为字符串,并返回
//toString()返回唯一值的方法,它不会因为本地环境的改变而发生变化。
//返回时间类型的数据,使用toLocaleString()
//若是后台处理字符串,使用toString()
//将数字转为字符串:
var a = 1234;
console.log(a.toString()) //'1234'
//将数组转为字符串:
let arr = ["a","b","c","d","e"]
console.log(arr.toString()) // "a,b,c,d,e"
//将时间转为字符串
var date = new Date();
console.log(date.valueOf()); //'1564453330442'
console.log(date.toString()); //"Tue Jul 30 2019 10:22:10 GMT+0800 (中国标准时间)"
valueOf() 用于返回指定对象的原始值,若对象没有原始值,则将返回对象本身
let str = '九十五分'
console.log(str.valueOf()) //九十五分
const arr = ['a','b','c']
console.log(arr.valueOf()) //['a','b','c']
let obj = {
name:'yy'
}
console.log(obj.valueOf()) //{name: 'yy'}
let date = new Date('2020-10-3 18:00:30')
console.log(date.valueOf()) //1601719230000:当前时间距1970年1月1日午夜的毫秒数
//时间戳转为标准的ISO时间格式
let timestamp = date.valueOf()
console.log(new Date(timestamp)) //Sat Oct 03 2020 18:00:30 GMT+0800 (中国标准时间)
indexOf() 查询并返回数据的索引
//查找数组中某元素的位置下标:
let arr = ["a","b","c","d","e"];
let a1 = arr.indexOf("c");
console.log( a1 ) // 2
//从第四个位置开始查找c元素
let arr2 = ["a","b","c","d","e","f","g","c"];
let a2 = arr2.indexOf("c",4);
console.log( a2 ) // 7
//判断数组中是否存在某元素:
let arr3 = ["a","b","c","d","e"];
let a3 = arr3.indexOf("f")
console.log( a3 ) // 没找到值为-1
lastIndexOf() 反向查询并返回数据的索引
//搜索将从指定位置开始,如果未指定开始位置,则从末尾开始,并在数组的开头结束搜索。
//如果未找到该项目,则返回 -1。
//如果要搜索的项目不止一次出现,将返回最后一次出现的位置。
let arr2 = ["a","b","c","d","e","f","g","h","c"];
var a2 = arr2.lastIndexOf("c",4);
console.log( a2 ) // 2
forEach() 用于调用数组的每个元素,并将元素传递给回调函数。对于空数组是不会执行回调函数的
//替代for循环,本身不支持 continue 与 break 语句,可以通过 some 和 every 来实现
let arr1 = [1,2,3,4];
arr1.forEach(function(item,index){
console.log(item);
});
//1
//2
//3
//4
--------------------------------------------------------------------------
//使用 return 语句实现 continue 关键字的效果
let arr2 = [1, 2, 3, 4, 5];
arr2.forEach(function (item) {
if (item === 3) {
return;
}
console.log(item);
});
//1
//2
//4
//5
map() 创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果
var arry = [1,4,9,16];
const map1 = arry.map(x => x *2);
console.log(map1); // [2,8,18,32]
filter() 创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
不会对空数组进行检测。
不会改变原始数组。
var ages = [32, 33, 16, 40];
var new = ages .filter( item =>item < 18)
console.log( new ) // [16]
console.log(ages) // [32, 33, 16, 40]; 不改变原数组
every() 用于检测数组所有元素是否都符合指定条件,使用指定函数检测数组中的所有元素:
如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测
如果所有元素都满足条件,则返回 true
不会对空数组进行检测。
不会改变原始数组。
let ages = [32, 33, 12, 40];
let checkAdult = ages.every(age=>age>18)
console.log( checkAdult ) // false
------------------------------------------------------------
every 的break实现:
let arr = [1, 2, 3, 4, 5];
arr.every(function (item) {
console.log(item);
return item !== 3;
});
//1
//2
//3
some() 用于检测数组中的元素是否满足指定条件,会依次执行数组的每个元素
如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
如果没有满足条件的元素,则返回false。
不会对空数组进行检测。
不会改变原始数组。
var ages = [32, 33, 12, 40];
var checkAdult = ages.some(age=>age<18)
console.log( checkAdult ) // true
------------------------------------------------------------
some的continue实现:
var arr = [1, 2, 3, 4, 5];
arr.some(function (item) {
if (item === 2) {
return; // 不能为 return false
}
console.log(item);
});
//1
//3
//4
//5
reduce() 接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。可以作为一个高阶函数,用于函数的 compose。
对于空数组是不会执行回调函数的。
//默认从左到右:
var numbers = [65, 44, 12, 4];
numbers.reduce((total,nextNum)=>{
return total + num
})
// 125
reduceRight() 和 reduce() 功能是一样的,不同的是 reduceRight() 从数组的末尾向前将数组中的数组项做累加。
//从右到左,减去每个数组元素:
var numbers = [2, 45, 30, 100];
numbers.reduceRight((total, num)=> {
return total - num;
})
// 23
ES6
Array.form() 可以接收一个伪数组作为参数,返回伪数组转换后的结果
//用法一:将类数组或可遍历对象转换成真正的数组
let arrlike = {
'0': 'a',
'1': 'b',
'2': 'c',
length: 3
}
let arr = Array.from(arrlike)
console.log(arr) //['a', 'b', 'c']
//用法二:用来对每个元素进行处理,将处理后的值放入返回的数组
let arrlike1 = {
'0': '1',
'1': '2',
'2': '3',
length: 3
}
let newAry = Array.from(arrlike1, function (item) {
return item * 2
}) // [2, 4, 6]
find() 用于找出第一个符合条件的数组成员,如果没有找到返回undefined
let ary=[{
id:1,
name:'张三'
},{
id:2,
name:'李四'
}
]
let res = ary.find(function(item,index){
// console.log(item,index)
return item.id ==2
})
//{id: 2, name: '李四'}
findIndex() 用于找出第一个符合条件的数组成员的位置,如果没有找到返回-1
let ary = [1,2,4,5,7,9]
let index = ary.findIndex((value,index)=>value>5)
console.log(index) //4
includes() 表示某个数组是否包含给定的值,返回布尔值
let arr = [1,2,4]
let res = arr.includes(10)
console.log(res)
//false