forEach()
遍历数组
对数组的每个元素执行一次给定的函数。可以代替for循环遍历每一个数组,有三个参数,第一个参数数组当前的每一个值,第二个数组当前的索引,第三个是数组对象本身。
forEach循环,循环结束没有返回值,返回值为undefined.
重点:
forEach循环回调函数中,
不可以return出一个值,但是可以使用
return去终止方法的执行
var arr = [1, 2, 3, 4, 5];
arr.forEach(function (itme) {
console.log(arr);
})
map()
方法根据回调函数返回一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。

回基数(
base
)的指数(
exponent
)次幂,即
base^exponent
var arr = [1, 2, 3, 4, 5];
var res = arr.map(function (itme) {
// 第一种利用Math.pow()
// return Math.pow(itme, 2)
// 第二种利用Es6的方法**次幂
return itme ** 2
})
console.log(res);
filter()筛选数组,同上都有三个参数,
第一个参数是每一个元素,第二个参数是下标,第三个参数是原数组,但是他返回的是所有符合要求的值,会将所有的都寻找到,通过return的判断条件,判断条件为true的组成一个新数组返回出去
var res = person.filter(function (itme, index, array) {
return itme.age > 18
})
console.log(res);
// 练习: 有如下数组, 问: 好人有哪些 ? 坏人有哪些 ?
var acts = [{
name: "大蛇丸",
isGood: false
},
{
name: "卡卡西",
isGood: true
},
{
name: "宇智波斑",
isGood: false
},
{
name: "鸣人",
isGood: true
}]
var res = acts.filter(function (itme) {
// 注意isGood本身就是一个布尔类型,所以不用==true
// 好人
// return itme.isGood
// 坏人
return !itme.isGood
})
console.log(res)
find()方法有三个参数,第一个参数是每一个元素,第二个参数是下标,第三个参数是原数组,返回的是条件成立返回第一个符合要求的对象,找到第一个就不在寻找.
通过return的条件返回一个
新的对象

function fn(person) {
return person.age > 20
}
console.log(person.find(fn));
第二种写法
var res = person.find(function (itme, index, array) {
return itme.age > 20
})
console.log(res);
findindex()循环数组,
方法返回数组中满足提供的测试函数的第一个元素的
索引
。若没有找到对应元素则返回-1
。
返回数组中第一个匹配条件元素中第一个的索引,找到后就不在寻找.如果没有匹配则返回-1;

var arr = [1, 2, 3, 4, 5];
var str = arr.findIndex(function (itme) {
return itme > 3
})
console.log(str);
every()
方法测试一个数组内的
所有元素是否都能通过某个指定函数的测试。它返回一个布尔值
,
全部满足为true,有一个不满足就是false
循环数组,通过return来判断条件,如果数组的每一项都满足条件返回ture,有一个不满足求返回false.
注:可以作为判断条件使用

var res = person.every(function (itme) {
return itme.age >= 18
})
console.log(res ? "全部满足" : "有一个不满足");
some()
测试数组,
测试
中是不是至少有 1 个元素通过了被提供的函数测试。找到一个就不在寻找,它返回的是一个 Boolean 类型的值。
循环数组,通过return来判断条件,如果数组中有一个满足条件返回ture,所有都不满足就返回false.

var res = person.some(function (itme) {
return itme.age < 18
})
console.log(res ? "有" : "无");
reduce()高阶函数,有四个参数:累加器acc ,当前值cur(不给值,默认acc为0),可以将数组中的累计处理,一般使用乘加较多.
可以实现数组的累加求和等

var arr = [1, 2, 3, 4, 5];
var res = arr.reduce(function (acc, cur) {
return acc * cur
// return acc + cur
}, 10)
console.log(res);
math.pow()
函数返
toString()数组上这个方法是把数组转为字符串,直观效果是去括号(不管多少括号都可以去除),不会改变原数组,返回的是改变后的元素
数组,字符串和数字都有
toString()方法,注意数组使用
toString()需要使用变量的方法
var arr = [6, 22, 3, 1, 55]
console.log(arr.toString());
类数组转真数组的方法:
首先了解一下为什么要转数组那,类数组不是真正的数组是使用不了数组的方法的,所以我们要转换为真数组才可以.
有哪些类数组那?arguments 是方法中的关键字,用于存储实际参数
// 伪数组:只有length属性
// 第一种:argumentes
function add(a, b) {
console.log(arguments);
}
add(1, 2, 3, 4, 5)
// 第二种: 字符串
var str="abcd"
console.log(str[0]);
// 第三种:DOM树
var dom=document.getElementsByTagName("p")
console.log(dom);
ES5转真数组是使用 Array.prototype.slice.call

ES6转真数组是使用有两种:
第一种:Array.from()
function add(a, b) {
var arr = Array.from(arguments)
console.log(arr);
}
add(1, 2, 3, 4, 5)
方法二:利用...展开运算符实现
function add(a, b) {
var arr = [...arguments]
console.log(arr);
}
add(1, 2, 3, 4, 5)
如何判断是否是数组可以使用 在ES6提供了Array.isArray(),如果返回的是true就是真正的数组,反之false就不是

而在ES5是使用instanceof来判断是否是真数组,但是存在一定的局限性,在全局变量的情况下会有局限性.

比
instanceof更好用的一种方式是Obj.prototype.toString.call()

或 判断他的indexOf是否大于-1,来判断他是否是真数组

Array.of()创建数组
Obiect.keys()获取对象自身所有的属性,类似fo...in,返回值是数组.
