JavaScript 数组基础知识
Array 类型:
检测数组:
console.log(myarr instanceof Array) //true
toString()方法会返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串
valueOf()返回的还是数组
数组的栈方法:
push方法从数组末尾添加一项,并返回修改后的数组长度
pop方法从数组的末尾移除一项,并返回该移除项
数组的队列方法:
push方法从数组末尾添加一项,并返回修改后的数组长度
shift方法从数组取出第一项,并返回该取出项
unshift方法从数组前端插入任意项,并返回该数组长度
从排序
reverse()方法会反转数组项的顺序
sort()方法按升序排列数组项——即最小的值位于最前面,最大的值排在最后面。
为了实现排序,sort()方法会调用每个数组项的 toString()转型方法,然后比较得到的字符串,以确定如何排序
var values = [6,1,'2',3,'10',4,'5'];
values.sort();
console.log(values);
function compare(value1, value2) {
if(value1 < value2){
return -1;
} else if (value1 > value2){
return 1;
} else {
return 0;
}
}
var val = [6,1,'2',3,'10',4,'5'];
val.sort(compare);
console.log(val);
操作方法
concat()方法连接多个数组,并返回新建数组
var colors = ['red','green','blue'];
var colors1 = colors.concat('yellow',['black','brown']);
console.log(colors);
console.log(colors1);
slice()方法可以接受一或两个参数,即要返回项的起始和结束位置。
var colors = ['red', 'green', 'blue','yellow','purple'];
var colors1 = colors.slice(1);
var colors2 = colors.slice(1,4);
console.log(colors1); // [ 'green', 'blue', 'yellow', 'purple' ]
console.log(colors2); // [ 'green', 'blue', 'yellow' ]
splice()方法
删除任意项,只需两个参数,参数一:要删除的起始项,参数二:要删除的个数。
插入,只需提供 3 个参数:起始位置、0(要删除的项数)和要插入的项。如果要插入多个项,可以再传入第四、第五,以至任意多个项。
替换,只需指定 3 个参数:起始位置、要删除的项数和要插入的任意数量的项。插入的项数不必与删除的项数相等。
var colors = ['red', 'green', 'blue','yellow','purple'];
var removed = colors.splice(0,1);
console.log(removed); // 返回移除项
removed1 = colors.splice(1,0,'ye');
console.log(removed1); // 返回空数组
removed2 = colors.splice(1,1,'bac');
console.log(removed2); // 返回被替换的项
console.log(colors);
位置方法
为数组实例添加了两个位置方法:indexOf()和 lastIndexOf()。这两个方法都接收
两个参数:要查找的项和(可选的)表示查找起点位置的索引。其中,indexOf()方法从数组的开头(位
置 0)开始向后查找,lastIndexOf()方法则从数组的末尾开始向前查找。
var numbers = [1,2,3,4,5,4,3,2,1];
console.log(numbers.indexOf(4)); //3
console.log(numbers.lastIndexOf(4)); //5
console.log(numbers.indexOf(4, 4)); //5
console.log(numbers.lastIndexOf(4, 4)); //3
迭代方法
every():对数组中的每一项运行给定函数,如果该函数对每一项都返回 true,则返回 true。
some():对数组中的每一项运行给定函数,如果该函数对任一项返回 true,则返回 true。
filter():对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组。
map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
forEach():对数组中的每一项运行给定函数。这个方法没有返回值。
var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.every(function (item, index, array) {
return (item > 2);
});
console.log(everyResult); // false
var someResult = numbers.some(function(item, index, array){
return (item > 2);
});
console.log(someResult); //true
var filterResult = numbers.filter(function(item, index, array){
return (item > 2);
});
console.log(filterResult); // [3,4,5,4,3]
var mapResult = numbers.map(function(item, index, array){
return item * 2;
});
console.log(mapResult); //[2,4,6,8,10,8,6,4,2]
numbers.forEach(function(item, index, array){
if(item > 2) {
console.log(index);
}
});
归并方法
reduce()方法从数组的第一项开始,逐个遍历到最后。
reduceRight()则从数组的最后一项开始,向前遍历到第一项。
这两个方法都接收两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值
reduce()和 reduceRight()的函数接收 4 个参数:前一个值、当前值、项的索引和数组对象。
var values = [1,2,3,4,5];
var sum = values.reduce(function(prev, cur, index, array){
return prev + cur;
});
console.log(sum); //15
var sum1 = values.reduceRight(function(prev, cur, index, array){
return prev + cur;
});
console.log(sum1); //15
浙公网安备 33010602011771号