/**
* 数组: 存储一组或一系列数据的容器
* - 数组也是一个对象
* - 不同的是普通对象使用字符串作为属性名的
* 而数组使用数字作为索引的
* - 数组的存储性能比普通对象好,在开发中经常使用数组存储一些数据
* - 数组里可以存储任何数据,包括对象(包括函数,数组)
*
* 创建数组
* - 字面量创建方式: []
* - 构造函数方式: new Array()
* - 区别:字面量创建方式, []中无论放什么都是数组元素。
* 构造函数方式, ()中如果只有一个正整数,则表示数组长度,每个值为undefined;
* 如果只有一个负整数或小数,则报错;
* 如果有多个整数或其他类型,则表示数组元素
*
* 数组的属性
* - length : 表示数组的长度
*
* 数组的索引
* - 下标:可以唯一标识一个数组空间的索引号。
*
* 遍历数组
* - for循环
* - forEach()
*
* 数组的方法
* 增、删
* - push(元素,...) :将新元素添加到数组的末尾,并返回新的长度。
* - pop() :删除数组的最后一个元素,并返回该元素。
* - unshift(元素,...) :将新元素添加到数组的开头,并返回新的长度。
* - shift() :删除数组的第一个元素,并返回该元素。
*
* 改
* - splice(index,howmany,item1,..itemX) 向/从数组添加/删除项目,并返回删除的项目。
* - index :(必选)开始位置的索引
* - howmany :(可选)删除的数量
* - item1,..itemX :(可选)要添加到数组中的新项目。
*
* 截
* - slice(start,end) :选择数组的一部分,并返回新数组。
* - start :(必选)开始位置的索引,包含开启索引
* - end :(可选,默认start之后所有)结束位置的索引,不包含结束索引
* - 可以是负数,倒着截取,最后一个数是-1,倒数第二个数是-2
*
* 拼
* - concat(array2, array3, ..., arrayX) :连接两个或多个数组,并返回已连接数组的副本。
* - 如果新元素是一个数组,则去掉最外层的[],将里面的内容进行拼接
*
* 转
* - toString() :返回包含所有数组值的字符串,以逗号分隔
* - 数字.toString(2-36) : 将数字转为指定进制的字符串
* - 数组.toString() : 将数组转为字符串
* - join('连接符') :将数组转为以指定连接符连接成的字符串
*
* 排
* - reverse() :逆序排
* - sort() :按字母编码排
* - sort(function(a,b){return a - b;}) : 按数字从小到大排序
* - sort(function(a,b){return b - a;}) : 按数字从大到小排序
*
*
* ES5新增(都不会影响原数组)
* - forEach() :按顺序为数组中的每个元素调用一次函数。
* - 这个方法支支持IE8以上的浏览器
* - 需要一个函数作为参数
* - 像这种函数,由我们创建但是不由我们调用的,我们称为回调函数
* - 数组中有几个元素函数就会打行几次,每次执行时,浏览器会将遍历到的元素
* 以实参的形式传递进来,我们可以来定义形参,来读取这些内容
* - 浏览器会在回调函数中传递三个参数,
* 第一个参数,就是当前正在询历的元素
* 第二个参数,就是当前正在遍历的元素的索引
* 第三个参数,就是正在遍历的数组
*
* - indexOf(item, start): 查找元素在数组中第一次出现的下标位置,如果没有,则返回-1
* - item :(必需)要搜索的项目
* - start :(可选)从哪里开始搜索。负值给定的位置将从结尾计数,然后搜索到最后。
* - lastIndexOf(item, start) : 查找元素在数组中从右向左查找第一次出现的下标位置,如果没有找到,返回 -1
* - item :(必需)要搜索的项目
* - start :(可选)从哪里开始搜索。负值给定的位置将从结尾计数,然后搜索到最后。
* - map(function(currentValue, index, arr), thisValue)
* :为每个数组元素调用函数的结果创建新数组
* - some(function(currentValue, index, arr), thisValue)
* :检查数组中的任何元素是否通过测试(作为函数提供)
* :检测数组中每一个元素,如果有一个元素的条件返回true,则直接退出循环,返回true;
* 如果所有元素都返回false时,最终返回false
* - every(function(currentValue, index, arr), thisValue)
* :检查数组中的所有元素是否都通过了测试(被作为函数提供)
* :检测数组中每一个元素,如果有一个元素的条件返回false时,则直接退出循环,返回false。
* 如果所有元素都返回true时,最终返回true.
* - filter(function(currentValue, index, arr), thisValue)
* :创建数组,其中填充了所有通过测试的数组元素(作为函数提供)
* - reduce(function(currentValue, index, arr), thisValue)
* :在每个数组元素上运行函数,以生成(减少它)单个值
*/
var arr1 = [2,5,6,7,8]
var arr = new Array(5,8,9);
//使用 typeof 检查一个数组时返回 object
console.log(typeof arr) //object
arr[0] = 0;
//向数组最后一位添加元素
arr[arr.length] = 10;//0,8,9,10
arr[arr.length] = 20;//0,8,9,10,20
//arr.push(99,98);
var result1 = arr.push(99,98);//0,8,9,10,20,99,98
console.log(result2);//7
//arr.push();
var result2 = arr.push();//0,8,9,10,20,99
console.log(result2);//98
//arr.unshift(100)
var result3 = arr.unshift(100);//100,0,8,9,10,20,99
console.log(result3);//7
arr.forEach(function(value,index,array){
console.log(value);//100,0,8,9,10,20,99
console.log(index);//0 1 2 3 4 5 6 7 8
console.log(array);//[100,0,8,9,10,20,99]
});
//
let text = "";
const fruits = ["apple", "orange", "cherry"];
fruits.forEach(myFunction);
document.getElementById("demo").innerHTML = text;
function myFunction(item, index) {
text += index + ": " + item + "<br>";
}
//对于数组中的每个元素:将值更新为原始值的 10 倍:
var numbers = [65, 44, 12, 4];
numbers.forEach(myFunction)
function myFunction(item, index, arr) {
arr[index] = item * 10;
}
//将数组中元素扩大十倍存储为新数组
const numbers = [65, 44, 12, 4];
const newArr = numbers.map(myFunction);//650,440,120,40
document.getElementById("demo").innerHTML = newArr;
function myFunction(num) {
return num * 10;
}
//计算数组中被四舍五入的数字的总和。
var numbers = [15.5, 2.3, 1.1, 4.7];
function getSum(total, num) {
return total + Math.round(num);
}
function myFunction(item) {
document.getElementById("demo").innerHTML = numbers.reduce(getSum, 0);
}
js- 数组【创建,属性,索引,常用方法】
于 2022-11-01 20:43:06 首次发布