es5-数组常用方法(迭代方法、栈方法、队列方法)
一、迭代方法
迭代(遍历)方法:forEach()、map()、filter()、some()、every()
1.数组方法forEach遍历数组 没有返回值
//通常用来渲染全部数据
var arr = [1, 2, 3];
var sum = 0;
arr.forEach(function(value, index, array) {
//参数一是:数组元素 每一遍打印一个元素
console.log('每个数组元素' + value);
//参数二是:数组元素的索引 每一遍打印一个索引
console.log('每个数组元素的索引号' + index);
//参数三是:当前的数组 整个数组
console.log('数组本身' + array);
//遍历数值相加
sum += value;
})
console.log(sum);//6
//相当于数组遍历的 for循环 没有返回值
2.map()方法
与forEach类似,遍历,有返回值
var arr = [10, 30, 4];
var map1 = arr.map(function(value,index,array) {
//参数一是:数组元素
//参数二是:数组元素的索引
//参数三是:当前的数组
return value*2
});
console.log(map1);//返回值是由每次循环调用的返回值所组成的数组;
//[20, 60, 8]
3.filter() 筛选数组(过滤数组)
//常用于选择功能 按条件查询来筛选 比如价格小于1000等
var arr = [12, 66, 4, 88, 3, 7];
var newArr = arr.filter(function(value, index,array) {
//参数一是:数组元素
//参数二是:数组元素的索引
//参数三是:当前的数组
//return筛选条件
return value >= 20;
});
console.log(newArr);//[66,88] //返回值是一个新数组
4.some()
查找数组中满足条件的元素 返回布尔值
some 查找数组中是否有满足条件的元素
var arr = [10, 30, 4];
var arr2 = [];
var flag = arr.some(function(value,index,array) {
//参数一是:数组元素
//参数二是:数组元素的索引
//参数三是:当前的数组
//1 return value < 3; 直接查询
//2 判断查询
if (value.pname === product.value) {
arr2.push(value);
return true; // return 后面必须写true
}
});
console.log(flag);//false返回值是布尔值,只要查找到满足条件的一个元素就立马终止循环
console.log(arr2);
5.every() 与some()类似
判断数组中的元素是否符合某个条件
如果数组中的所有元素都符合条件 返回true
相反只要有一个不符合就返回false
var arr = [10, 30, 4];
var flag = arr.every(function(value,index,array) {
//参数一是:数组元素
//参数二是:数组元素的索引
//参数三是:当前的数组
return value < 20;
});
console.log(flag);//false返回值是布尔值,没有全部满足条件
注:
- some一般配合push使用 将查询到符合条件的单个数据push到一个新数组中,应为some()方法只进行判断true与false 不返回新数组
- forEach()、filter() 中不会因为return而停止遍历 所以有时候查询的时候some效率高 按需使用
二、栈方法
1.push()与pop()
push() 方法可以接收任意数量的参数,把它们逐个添加到数组的末尾,并返回修改后数组的长度。
pop()方法从数组的末尾移除最后一项,减少数组的长度,并返回被移除的项。
var colors = new Array();
var count = colors.push("red","green"); //往数组中插入2项
alert(count); // 2
count = colors.push("black"); //再插入另外一项
alert(count); // 3
var item = color.pop(); //弹出栈顶项
alert(item); // black
alert(colors.length); // 2
三、队列方法shift()和push() / unshift()与pop()
1.shift()和push()
shift()移除数组中的第一项并返回该项,同时将数组长度减 1。
结合使用shift()和push() 方法,可以像使用队列一样使用数组。
//先进先出
var colors = new Array(); //创建一个数组
var count = colors.push("red","green"); //推入两项
alert(count)//2
count = colors.push("black"); //推入另一项
alert(count)//3
var item = colors.shift(); //取得第一项
alert(item); //"red"
alert(colors.length)//2
2.unshift()与pop()
unshift() 和 pop() 方法,可以从相反的方向来模拟队列,即在数组的前端添加项,从数组末端移除项。
//后进后出
var colors = new Array(); //创建一个数组
var count = colors.unshift("red","green"); //推入两项
alert(count)//2
count = colors.unshift("black"); //推入另一项
alert(count)//3
var item = colors.pop(); //取得第一项
alert(item); //"green"
alert(colors.length)//2