Array
常用属性和方法:
属性:1-length. 2-prototype
方法:1-from(). 2-isArray(). 3-of(). 4-concat(). 5-copyWithin(). 6-entries(). 7-every()
8-fill(). 9-filter(). 10-find(). 11-forEach(). 12-includes(). 13-indexOf(). 14-join() 15-keys().
16-map(). 17-pop(). 18-push(). 19-reduce(). 20-reverse(). 21-shift(). 22-slice().
23-some(). 24-sort(). 25-splice(). 26-toString(). 27-unshift(). 28-values()
属性
1,Array.length——数组的实例属性,返回或设置一个数组中元素的个数
//获取数组的长度。
var array1 = ['a', 'b', 'c'];
var array2 = [5, 2, 54, 22, 44, 0];
console.log(array1.length); // 3
console.log(array2.length); // 6
2,Array.prototype——表示数组构造函数的原型,允许向Array对象添加新的属性和方法
//JavaScript Array本身并不提供 test() 方法。
if(!Array.prototype.test) {
Array.prototype.test = function() {
//自定义方法。。。
console.log(‘自定义test方法’);
}
}
方法
1,Array.from()——从一个类似数组或可迭代对象中创建一个新的数组实例
console.log(Array.from('foo'));
// ["f", "o", "o"]
console.log(Array.from([1, 2, 3], x => x + x));
// [2, 4, 6]
2,Array.isArray()——确定传递的值是否是一个 Array
Array.isArray([1, 2, 3]);
// true
Array.isArray({foo: 123});
// false
Array.isArray("string");
// false
Array.isArray(undefined);
// false
3,Array.of()——创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型
//Array.of() 和 Array 构造函数之间的区别在于处理整数参数:
//Array.of(7) 创建一个具有单个元素 7 的数组,
//而 Array(7) 创建一个长度为7的空数组(注意:这是指有7个空位的数组,而不是7个undefined)
Array.of(7); // [7]
Array.of(1, 2, 3); // [1, 2, 3]
Array(7); // [ , , , , , , ]
Array(1, 2, 3); // [1, 2, 3]
4,Array.concat()——用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组
var array1 = ['a', 'b', 'c'];
var array2 = ['x', 'y', 'z'];
console.log(array1.concat(array2));
// ["a", "b", "c", "x", "y", "z"]
5,Array.copyWithin()——浅复制数组的一部分到同一数组中的另一个位置,并返回它,而不修改其大小
//copyWithin(target, start,end) 接收3个参数,
//target-复制到的位置,start-开始位置,end-结束位置
[1, 2, 3, 4, 5].copyWithin(0, 3);
// [4, 5, 3, 4, 5]
[1, 2, 3, 4, 5].copyWithin(0, 3, 4);
// [4, 2, 3, 4, 5]
6,Array.entries()——返回一个新的Array Iterator对象,该对象包含数组中每个索引的键/值对
var array1 = ['a', 'b', 'c'];
var iterator1 = array1.entries();
console.log(iterator1.next().value); //[0, "a"]
console.log(iterator1.next().value); //[1, "b"]
//iterator.next方法运行
var arr = ["a", "b", "c"];
var iter = arr.entries();
var a = [];
// for(var i=0; i< arr.length; i++){ // 实际使用的是这个
for(var i=0; i< arr.length+1; i++){ // 注意,是length+1,比数组的长度大
var tem = iter.next(); // 每次迭代时更新next
console.log(tem.done); // 这里可以看到更新后的done都是false
if(tem.done !== true){ // 遍历迭代器结束done才是true
console.log(tem.value);
a[i]=tem.value;
}
}
console.log(a); // 遍历完毕,输出next.value的数组
7,Array.every()——测试数组的所有元素是否都通过了指定函数的测试
function isLarge(curValue) {
return curValue < 40;
}
var array1 = [1, 30, 39, 29, 10, 13];
console.log(array1.every(isLarge)); //true
8,Array.fill()——用一个固定值填充一个数组中从起始索引到终止索引内的全部元素,不包括终止索引
var array1 = [1, 2, 3, 4];
//用0填充索引2到4
console.log(array1.fill(0, 2, 4)); //[1, 2, 0, 0]
//用5从索引1开始填充
console.log(array1.fill(5, 1)); //[1, 5, 5, 5]
//用6填充整个数组
console.log(array1.fill(6)); //[6, 6, 6, 6]
9,Array.filter()——创建一个新数组, 其包含通过所提供函数实现的测试的所有元素
var array1 = [12, 5, 8, 130, 44];
function isBigEnough(element) {
return element >= 10;
}
var filtered = array1.filter(isBigEnough);
// filtered is [12, 130, 44]
//ES2015实现
const fruits = ['apple', 'banana', 'grapes', 'mango', 'orange'];
const filterItems = (query) => {
return fruits.filter((el) =>
el.toLowerCase().indexOf(query.toLowerCase()) > -1
);
}
console.log(filterItems('ap')); // ['apple', 'grapes']
console.log(filterItems('an')); // ['banana', 'mango', 'orange']
10,Array.find()——返回数组中满足提供的测试函数的第一个元素的值,否则返回undefined
var array1 = [5, 12, 8, 130, 44];
var found1 = array1.find(function(element) {
return element > 10;
});
console.log(found1); // 12
//类似方法还有-findIndex(),返回数组中满足提供的测试函数的第一个元素的索引,否则返回-1
var found2= array1.findIndex(function(element) {
return element > 10;
});
console.log(found2); // 1
11,Array.forEach()——对数组的每个元素执行一次提供的函数
var array1 = [1, 2, 3, 4];
var array2 = [];
array1.forEach(function(element) {
array2.push(element*element);
});
console.log(array2); //[1, 4, 9, 16]
12,Array.includes()——判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false
//arr.includes(searchElement)
//arr.includes(searchElement, fromIndex)
[1, 2, 3].includes(2); // true
[1, 2, 3].includes(4); // false
[1, 2, 3].includes(3, 3); // false
[1, 2, 3].includes(3, -1); // true
[1, 2, NaN].includes(NaN); // true
13,Array.indexOf()——返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1
var beasts = ['ant', 'bison', 'camel', 'duck', 'bison'];
console.log(beasts.indexOf('bison')); // 1
// 从索引2开始找
console.log(beasts.indexOf('bison', 2)); // 4
console.log(beasts.indexOf('giraffe')); // -1
14,Array.join()——将一个数组(或一个类数组对象)的所有元素连接成一个字符串并返回这个字符串
var elements = ['Fire', 'Wind', 'Rain'];
console.log(elements.join()); //Fire,Wind,Rain
console.log(elements.join('')); //FireWindRain
console.log(elements.join('-')); //Fire-Wind-Rain
15,Array.keys()——返回一个包含数组中每个索引键的Array Iterator
对象。
var array1 = ['a', 'b', 'c'];
var iterator = array1.keys();
for (let key of iterator) {
console.log(key); //0 1 2
}
16,Array.map()——创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果
var array1 = [1, 2, 3, 4];
const map1 = array1.map(x => x * 2);
console.log(map1); //[2, 8, 18, 32]
17,Array.pop()——从数组中删除最后一个元素,并返回该元素的值,此方法更改数组的长度
let myFish = ["angel", "clown", "mandarin", "surgeon"];
let popped = myFish.pop();
console.log(myFish); //["angel", "clown", "mandarin"]
console.log(popped); // surgeon
18,Array.push()——将一个或多个元素添加到数组的末尾,并返回新数组的长度
var animals = ['pigs', 'goats', 'sheep'];
console.log(animals.push('cows')); // 4
console.log(animals); // ["pigs", "goats", "sheep", "cows"]
animals.push('chickens');
console.log(animals); // ["pigs", "goats", "sheep", "cows", "chickens"]
19,Array.reduce()——创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果
//reduce为数组中的每一个元素依次执行callback函数,接受四个参数:
//accumulator 累加器
//currentValue 当前值
//currentIndex 当前索引
//array 数组
var array1 = [0, 1, 2, 3]
var sum1 = array1.reduce(function (a, b) {
return a + b;
}, 0); //sum1 6
var sum2 = array1.reduce((a,b)=> a+b, 10); //sum2 16
20,Array.reverse()——将数组中元素的位置颠倒,第一个数组元素成为最后一个数组元素,最后一个数组元素成为第一个
var array1 = ['one', 'two', 'three'];
console.log(array1); // ['one', 'two', 'three']
var reversed = array1.reverse();
console.log(reversed); // ['three', 'two', 'one']
console.log(array1); // ['three', 'two', 'one']
21,Array.shift()——从数组中删除第一个元素,并返回该元素的值,此方法更改数组的长度
let sports = ['swim', 'run', 'bike', 'climb'];
console.log('调用 shift 之前: ' + sports);
// "调用 shift 之前: swim,run,bike,climb"
var shifted = sports.shift();
console.log('调用 shift 之后: ' + sports);
// "调用 shift 之后: run,bike,climb"
console.log('被删除的元素: ' + shifted);
// "被删除的元素: swim"
22,Array.slice()——返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象,且原始数组不会被修改
var animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];
console.log(animals.slice(2)); // ["camel", "duck", "elephant"]
console.log(animals.slice(2, 4)); // ["camel", "duck"]
console.log(animals.slice(1, 5)); // ["bison", "camel", "duck", "elephant"]
23,Array.some()——测试数组中的某些元素是否通过由提供的函数实现的测试
/*
some 为数组中的每一个元素执行一次 callback 函数,直到找到一个使得 callback 返回一个“真值”(即可转换为布尔值 true 的值)。如果找到了这样一个值,some 将会立即返回 true。否则,some 返回 false。
callback 被调用时传入三个参数:元素的值,元素的索引,被遍历的数组。
注意:对于放在空数组上的任何条件,此方法返回false。
*/
var array1 = [2, 5, 8, 1, 4];
var array2 = [12, 5, 8, 1, 4];
//检测在数组中是否有元素大于 10
function isBiggerThan10(element, index, array) {
return element > 10;
}
array1.some(isBiggerThan10); // false
array2.some(isBiggerThan10); // true
24,Array.sort()——对数组的元素进行排序,并返回数组,排序不一定是稳定的。默认排序顺序是根据字符串Unicode码点
var numbers1 = [4, 2, 5, 1, 3];
numbers1.sort(function(a, b) {
return a - b;
});
console.log(numbers1);
//也可以写成:
var numbers2 = [4, 2, 5, 1, 3];
numbers2.sort((a, b) => a - b);
console.log(numbers2);
// [1, 2, 3, 4, 5]
25,Array.splice()——通过删除现有元素和/或添加新元素来更改一个数组的内容
var months = ['Jan', 'March', 'April', 'June'];
//从第1位开始删除0个元素,插入“Feb”
months.splice(1, 0, 'Feb');
console.log(months); //['Jan', 'Feb', 'March', 'April', 'June']
//从第4位开始删除1个元素,然后插入“May”
months.splice(4, 1, 'May');
console.log(months); // ['Jan', 'Feb', 'March', 'April', 'May']
26,Array.toString()——返回一个字符串,表示指定的数组及其元素
var array1 = [1, 2, 'a', '1a'];
console.log(array1.toString()); // "1,2,a,1a"
27,Array.unshift()——将一个或多个元素添加到数组的开头,并返回新数组的长度
var array1 = [1, 2, 3];
console.log(array1.unshift(4, 5)); // 5
console.log(array1); // [4, 5, 1, 2, 3]
28,Array.values()——返回一个新的 Array Iterator
let arr = ['w', 'y', 'k', 'o', 'p'];
let eArr = arr.values();
console.log(eArr.next().value); // w
console.log(eArr.next().value); // y
console.log(eArr.next().value); // k
console.log(eArr.next().value); // o
console.log(eArr.next().value); // p