js数组
一:数组的声明
(1) 构造函数声明数组:
let arr = new Array(); //构造函数声明数组
arr[0] = '侯宝文';
console.log(arr); // ["侯宝文"]
console.log(arr.__proto__); //构造函数的原型对象(可以看到内置的API)
console.log(Array.prototype); //构造函数的原型对象(可以看到内置的API)
console.log(Array.prototype === arr.__proto__); // true
(2)常规声明
let arr1 = ["侯宝文","李华"];
arr1[2] = "小红";
console.log(arr1); //["侯宝文", "李华", "小红"]
二:往数组的原型上添加自定义方法
let arr = new Array("侯宝文");
Array.prototype.sayHello = function() {
console.log(this); //this指向调用该方法的数组实例对象
console.log('Hello' + this[0])
};
arr.sayHello(); // Hello 侯宝文
三:数组常规API
let arr = new Array("侯宝文");
(1) push 往数组的尾部添加元素,原数组改变,返回数组的长度
console.log(arr.push("大炮")); // 2
console.log(arr); // ["侯宝文", "大炮"]
(2) pop 删除数组尾部的一项,原数组改变,返回删除的项
console.log(arr.pop()); // 大炮
console.log(arr); // ["侯宝文"]
(3) unshift 往数组的头部添加元素,原数组改变,返回数组的长度
console.log(arr.unshift('天天'));
console.log(arr);
(4) shift 删除数组头部的一项,原数组改变,返回删除的项
console.log(arr.shift());
console.log(arr);
(5) splice 数组的删除和插入,返回的是删除的元素所组成的数组,原数组改变。
console.log(arr.splice(0, 1,'ccc')); //['侯宝文'] 从数组的下标0开始删除1项,并把'ccc'放到数组下标0的位置。
console.log(arr); //['ccc']
(6) slice 从指定的数组起始下标到结束下标(左闭右开),截取数组,原数组不变,返回截取的数组。
console.log(arr.slice(0, 1)); //["侯宝文"]
console.log(arr); //["侯宝文"]
(7) join 将数组的每一项以指定的字符拼接成字符串,并返回此字符串,原数组不变。
arr.push('666');
console.log(arr.join('+')); // 侯宝文 + 666
console.log(arr); // ["侯宝文", "666"]
(8) concat 拼接两个数组,原数组不变
let arr1 = ['小红','李明'];
console.log(arr.concat(arr1)); //["侯宝文", "小红", "李明"]
(9) indexOf从前往后找,返回找到的第一个项的下标。lastIndexOf:从后往前找
arr = [1,2,3,3,2,1];
console.log(arr.indexOf(3)); // 2
console.log(arr.lastIndexOf(3)); // 3
(10) isArray 判断对象是否为数组
let json = {age:23};
console.log(arr.__proto__.constructor.isArray(arr)); // true
console.log(Array.isArray(json)); //false
四:数组的排序
sort排序
let arr = [2,5,3,11,8,9,14,4,19];
let arr1 = [2,5,3,11,8,9,14,4,19];
function compare(a,b){ // 从小到大
return a-b
}
function compare1(a,b){ // 从大到小
return b-a
}
arr.sort(compare);
arr1.sort(compare1);
console.log(arr); //[2, 3, 4, 5, 8, 9, 11, 14, 19]
console.log(arr1); //[19, 14, 11, 9, 8, 5, 4, 3, 2]
五:数组的迭代
(1) map 把处理的每一项的返回值放到一个新数组,并返回处理后的新数组。
let arr = [1, 2, 3, 4, 5, 9, 14, 16, 19];
let arr1 = arr.map((item, index) => {
return item + 1;
});
console.log(arr); // [1, 2, 3, 4, 5, 9, 14, 16, 19]
console.log(arr1); // [2, 3, 4, 5, 6, 10, 15, 17, 20]
(2)some 遍历数组,在回调函数里进行条件的判断,当有一个元素满足条件时就停止遍历并返回true;当全部的元素都不满足要求时,返回false
let arr = [1, 2, 3, 4, 5, 9, 14, 16, 19];
let arr1 = arr.some((item, index) => {
return item > 100;
});
console.log(arr); // [1, 2, 3, 4, 5, 9, 14, 16, 19]
console.log(arr1); // false
(3) every 遍历数组,同上。当有一个元素不满足条件时就停止遍历并返回false;当全部元素都满足时,返回true;
let arr = [1, 2, 3, 4, 5, 9, 14, 16, 19];
let arr1 = arr.every((item, index) => {
return item > 0;
});
console.log(arr); // [1, 2, 3, 4, 5, 9, 14, 16, 19]
console.log(arr1); // true
(4)filter 将符合条件的元素筛选出来返回一个新的数组
let arr = [1, 2, 3, 4, 5, 9, 14, 16, 19];
let arr1 = arr.filter((item, index) => {
return item % 2 === 0;
});
console.log(arr); // [1, 2, 3, 4, 5, 9, 14, 16, 19]
console.log(arr1); // [2, 4, 14, 16]
(5)reduce 一开始res是数组的第一项,value是数组的第二项,回调函数的返回值会赋给res.
let arr = [1, 2, 3, 4, 5];
let arr1 = arr.reduce((res, value) => {
return res + value;
});
console.log(arr1); // 15

浙公网安备 33010602011771号