创建数组
一、采用直接量创建
var arr1 = []; //创建一个空数组
var arr2 = [1, 2, 3]; // 创建一个有三个元素的数组
二、采用构造函数创建
var arr3 = new Array(); //创建一个空数组
var arr4 = new Array(10); //创建一个长度为10的空数组
var arr5 = new Array(5,4,3,2,1); //创建数组并初始化
数组属性
一、constructor (返回创建数组对象的原型函数)
var cars = ['Volvo', 'BMW', 'Saab'];
cars.construtor;
//输出:function Array() { [native code] }
二、length (返回数组的长度,即数组元素的个数)
var cars = ['Volvo', 'BMW', 'Saab'];
cars.length;
//输出:3
//cars含有3个元素,所以cars的长度为3
三、prototype (Array属性构造器,为原型函数Array添加属性或方法)
Array.prototype.myUpperCase = function() {
for(i=0; i<this.length; i++) {
this.[i] = this.[i].toUpperCase();
}
};
var fruits = ['Banana', 'Orange', 'Apple', 'Mango'];
fruits.myUpperCase();
console.log(fruits);
//输出: ['BANANA', 'ORANGE', 'APPLE', 'MANGO'];
Array对象属性
一、every()方法
1、定义和用法
- every()方法用于检测所有元素是否都符合指定条件(通过函数提供)
- every()方法使用指定函数检测数组中的每一个元素
注意:every()方法不会对空数组进行检测
注意:every()方法不会改变原数组
2、语法
array.every(function(currentValue, index, arr), thisValue);
/**
* @ function(currentValue, index, arr)
* 必须。函数,数组中的每个元素都会执行这个函数
* @ currentValue: 必须,当前元素的值
* @ index:可选,当前元素的索引
* @ arr:可选,当前元素属于的数组对象
*
* @ thisValue: 可选,对象作为该执行回调时使用,传递给函数,用作‘this’的值,如果省略了thisValue,‘this’的值为‘undefined’
*/
// 返回值:布尔值,如果所有元素都通过检测则返回true,否则返回false。
3、实例
var numbers = [2, 3, 4, 5, 7, 8];
numbers.every(function(curr) {
return curr >= 5;
});
// 上边代码的返回值为false, 因为存在小于5的值
numbers.every(function(curr) {
return curr >= 1;
});
// 上面代码的返回值为true, 数组中每一个元素都大于1
二、some()方法
1、定义和用法
- some()方法用于检测数组中的元素是否满足指定条件
- some()方法会依次执行数组的每个元素
注意:some()方法不会对空数组进行检测
注意:some()方法不会改变原数组
2、语法
array.some(function(currentValue, index, arr), thisValue);
/**
* @ function(currentValue, index, arr)
* 必须。函数,数组中的每个元素都会执行这个函数
* @ currentValue: 必须,当前元素的值
* @ index:可选,当前元素的索引
* @ arr:可选,当前元素属于的数组对象
*
* @ thisValue: 可选,对象作为该执行回调时使用,传递给函数,用作‘this’的值,如果省略了thisValue,‘this’的值为‘undefined’
*/
// 返回值:布尔值,如果数组中有元素满足条件则返回true, 否则返回false;
3、实例
var ages = [4, 12, 16, 20, 24];
ages.some(function(curr) {
return curr >= 18;
});
// 上面代码的返回值为true,因为存在大于等于18的值
三、map()方法
1、定义和用法
- map()方法返回一个新数组,数组中的元素为原始数组元素调用处理后的值
- map()方法按照原始数组元素顺序依次处理元素
注意:map()不会对空数组进行检测
注意:map()不会改变原始数组
2、语法
array.map(function(currentValue, index, arr), thisValue)
/**
* @ function(currentValue, index, arr)
* 必须。函数,数组中的每个元素都会执行这个函数
* @ currentValue: 必须,当前元素的值
* @ index:可选,当前元素的索引
* @ arr:可选,当前元素属于的数组对象
*
* @ thisValue: 可选,对象作为该执行回调时使用,传递给函数,用作‘this’的值,如果省略了thisValue,‘this’的值为‘undefined’
*/
// 返回值:返回数组,数组中的元素为原始数组元素调用函数处理后的值
3、实例
var names = ['Edison', 'Daniel', 'Jack', 'Andy'];
names.map(function(curr) {
return curr.toUpperCase();
})
// 输出:['EDISON', 'DANIEL', 'JACK', 'ANDY'];
四、forEach()方法
1、定义和用法
- forEach()方法会遍历数组中的每个元素,并将元素传递给回调函数
注意:forEach()对于空数组不会执行回调函数
注意:forEach()也不会改变原始数组
2、语法
array.forEach(function(currentValue, index, arr), thisValue);
/**
* @ function(currentValue, index, arr)
* 必须。函数,数组中的每个元素都会执行这个函数
* @ currentValue: 必须,当前元素的值
* @ index:可选,当前元素的索引
* @ arr:可选,当前元素属于的数组对象
*
* @ thisValue: 可选,对象作为该执行回调时使用,传递给函数,用作‘this’的值,如果省略了thisValue,‘this’的值为‘undefined’
*/
// 返回值:undefined,
3、实例
var sum = 0;
var numbers = [1, 2, 3, 4, 5];
numbers.forEach(function(curr) {
sum += curr;
});
console.log(sum); // 15
// 遍历数组numbers中的每个元素,并将当前元素与sum相加。
五、filter()方法
1、定义和用法
- filter()方法会返回一个新的数组,新数组中的元素是符合条件函数检查的元素。
注意:filter()不会对空数组进行检测
注意:filter()不会改变原始数组
2、语法
array.filter(function(currentValue, index, arr), thisValue)
/**
* @ function(currentValue, index, arr)
* 必须。函数,数组中的每个元素都会执行这个函数
* @ currentValue: 必须,当前元素的值
* @ index:可选,当前元素的索引
* @ arr:可选,当前元素属于的数组对象
*
* @ thisValue: 可选,对象作为该执行回调时使用,传递给函数,用作‘this’的值,如果省略了thisValue,‘this’的值为‘undefined’
*/
// 返回值:返回数组(符合条件的元素组成的新数组)。如果没有符合条件的元素则返回空数组
3、实例
var ages = [18, 24, 30, 23, 12];
ages.filter(function(curr) {
return curr >= 18;
});
// 输出:[18, 24, 30, 23]