forEach (js v1.6)
map()— —更新数组
filter()、includes()、find()、findIndex()— —筛选(删除)数组
some()、every()— —判断数组
reduce()— —叠加数组
isNaN() 函数用于检查其参数是否是非数字值。
Concat() 连接两个或更多数组
splice(index,len,[item])删除元素,并向数组添加一个新元素。
Slice() 从某个已有的数组返回选定的元素
Join() 把数组的所有元素放入一个字符串,元素通过指定的分隔符进行分割
push() 在数组后添加元素,并返回新的长度
unshift()在数组最前添加元素
pop() 删除数组最后一个元素并返回该元素的值
reverse()颠倒数组中元素的顺序
shift() 删除并返回数组中第一个元素
sort() 对数组元素进行排序
toSource() 返回该对象的源代码
toString() 把数组转换为字符串并返回结果
toLocaleString() 把数组转换为本地数组,并返回结果
valueOf() 返回对象的原始值
forEach方法中的function回调支持3个参数,第1个是遍历的数组内容;第2个是对应的数组索引,第3个是数组本身。
[1,2,3,4].forEach(console.log);
// 结果:// 1, 0, [1, 2, 3, 4]// 2, 1, [1, 2, 3, 4]// 3, 2, [1, 2, 3, 4]// 4, 3, [1, 2, 3, 4]
小案列:
var sum=0;
[1,2,3,4].forEach(function(item,index,array) {
console.log(array[index] ==item);//truesum+=item;
});
alert(sum);//10
更进一步,forEach除了接受一个必须的回调函数参数,还可以接受一个可选的上下文参数(改变回调函数里面的this指向)(第2个参数)。
array.forEach(callback,[ thisObject])
例子:
var database = {
users: ["张含韵", "江一燕", "李小璐"],
sendEmail: function (user) {
if (this.isValidUser(user)) {
console.log("你好," + user);
} else {
console.log("抱歉,"+ user +",你不是本家人"); }
},
isValidUser: function (user) {
return /^张/.test(user); }
};
// 给每个人法邮件
database.users.forEach(// database.users中人遍历
database.sendEmail,// 发送邮件
database// 使用database代替上面标红的this
);
// 结果:
// 你好,张含韵
// 抱歉,江一燕,你不是本家人
// 抱歉,李小璐,你不是本家
map()— —更新数组
var arr = [1,2,3,4,5] ;
var newArr = arr.map(function(item,index){
return item*2 ; //操作更新数组
})
console.log(newArr); //打印新数组
console.log(arr); //打印原数组,map()没有改变原数组
var newArr2 = newArr.map(function(item,index){
return `
//ES6语法,模版字符串,波浪号键,变量使用${}
//["
})
console.log(newArr2.join('')); //数组.join(),把数组每一项连接起来,形成字符串string
console.log(newArr);
arr.filter()
1、创建新数组
2、不改变原数组
3、输出的是判断为true的数组元素形成的新数组
4、回调函数参数,item(数组元素)、index(序列)、arr(数组本身)
5、使用return操作输出,会循环数组每一项,并在回调函数中操作
var arr = [1,2,3,4,5] ;
var newArr = arr.filter(function(item,index){
return item>2&&item<5 ; //根据判断为true来遍历循环添加进新数组
})
console.log(newArr); //打印新数组
console.log(arr);