<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>数组</title>
</head>
<body>
</body>
<!-- <script>
/*
//数组
//构造函数--创建数组
//构造函数创建方法一
var arr = new Array();
// arr[0] = 100;
// arr[1] = 'hello';
// arr[3] = false;
//arr.length自动随数组增加而增加
arr[arr.length] = 100;
arr[arr.length] = 'hello';
console.log(arr);
//构造函数创建方法二
var arr1 = new Array(100, "hello", true);//3个元素
var arr2 = new Array(10);//创建一个长度为10的数组
var arr3 = new Array("hello");//创建一个元素的数组
*/
//字面量--创建数组
var arr = [];//空数组
var arr1 = [10, "hello", false];
console.log(arr1.length);
console.log(arr1);
console.log(arr1[0]);
console.log(arr1[1]);
console.log(arr1[2]);
// 遍历数组
//常用
console.log('var i = 0; i < arr1.length; i++');
for (var i = 0; i < arr1.length; i++) {
console.log(arr1[i]);
}
//for...in语句
console.log('var i in arr1');
for (var i in arr1) {
console.log(arr1[i]);
}
// ES6
//for...of语句 console.log('var val of arr1');
for (var val of arr1) {
console.log(val);
}
</script> -->
<!-- <script>
// 数组方法
//遍历数组新方法 遍历数组新方法 遍历数组新方法 遍历数组新方法 遍历数组新方法 遍历数组新方法
//方法一:forEach(function (v, i, arr)
/*
console.log('forEach(function (v, i, arr)');
var arr = [90, 78, 100, "hello"];
arr.forEach(function (v, i, list) {
console.log(v);
console.log(i);
console.log(list);
//forEach() 本身是不支持的 continue 与 break 语句的
if(v%2==1){
return;//return模拟 continue 关键字的效果
}
});//回调函数
// arrObj.forEach(function (v, i, arr) {
// v//当前遍历的每个元素
// i//当前元素对应的下标
// arr//数组本身
// })
*/
//方法二:map()可映射(计算)
/*
console.log('map()');
var arr = [90, 78, 100];
var res = arr.map(function (v, i, arr) {
console.log(v);//当前遍历的每个元素
console.log(i);//当前元素对应的下标
console.log(arr);//数组本身
return 2 * v;//映射成2倍
});
console.log(res);
// arrObj.map(function (v, i, arr) {
// v//当前遍历的每个元素
// i//当前元素对应的下标
// arr//数组本身
// return 2 * v;//映射成2倍
// })
// 应用
var arrc = [90, 78, 100, 50, 15];
var resc = arrc.map(function (v) {
if (v >= 60) {
return '及格';
} else {
return '不及格';
}
})
console.log(resc);!
*/
// 方法三:arr.filter(function (val, i, arr)多用于过滤
/*
console.log('arr.filter(function (val, i, arr)');
var arr = [89, 100, 90, 78, 49, 60];
var cot = 0;
var res = arr.filter(function (val, i, arr) {
console.log(val);
console.log(i);
console.log(arr);
cot += val;
return val <= 90
})
console.log(cot);
console.log(res);
*/
//迭代求和
//arr.reduce(function (total, v, i, arr),参数2 )
console.log('arr.reduce(function (total, v, i, arr) ,参数2)')
var arr = [100, 80, 70, 96, 30];
var res = arr.reduce(function (total, v, i, arr) {
// console.log(total, v);
// return 1;
return total + v;
}, 0)
console.log(res);
//把函数里的返回值作为回调函数的第一个参数的值
//arr0bj.reduce(function (total, V, i, arr) {
//total//初始值,或函数的返回值
// v当前遍历的元素
// i当前元素的下标
//}, 参数2)
// 参数2: 可选total的初始 值若省略,total的初始值是数组的第一个元素
//应用一
console.log('应用一');
var arRt = [100, 80, 70, 96, 30];
var ret = arRt.reduce(function (total, v, i, arr) {
if (v < 60) {
total = total + v;
}
return total;
}, 0)
console.log(ret);
var ret1 = arRt.reduce(function (total, v, i, arr) {
if (v >= 60) {
total = total + v;
}
return total;
}, 0)
console.log(ret1);
//应用二(reduce和filter结合)
console.log('应用二');
var arrc = [100, 80, 70, 96, 30];
var resc = arrc.filter(function (v, i, arr) {
return v >= 60;
})
var rescc = resc.reduce(function (total, v, i, arr) {
return total + v;
}, 0)
var resc1 = arrc.filter(function (v, i, arr) {
return v < 60;
})
var rescc1 = resc1.reduce(function (total, v, i, arr) {
return total + v;
}, 0)
console.log(resc);
console.log(rescc);
console.log(resc1);
console.log(rescc1);
</script> -->
<!-- <script>
//数组方法
//删除方法 删除方法 删除方法 删除方法 删除方法 删除方法 删除方法 删除方法 删除方法 删除方法
//pop()删除数组的最后一个元素并返回删除的元素
//shift() 删除并返回数组的第一个元素
/*
var arr = [100, 80, 50, 'hello', true];
console.log(arr.shift());
console.log(arr.pop());
console.log(arr);
//arrObj.pop()删除数组里的最后一个元素
// arrobj.shift() 删除数组里的第一个元素
//返回值:删除的元素
*/
// 增加方法
//push() 向数组的末尾添加一个或更多元素,返回新数组的长度
//unshift() 向数组的开头添加一个或更多元素,并返回新的长度。
//var arr = [100, 80, 50, 'hello', true];
// console.log(arr.unshift('world', 2));
// console.log(arr.push('world', 1));
// console.log(arr);
// arrObj .pop()删除数组里的最后一个元素
// arr0bj.shift() 删除数组里的第一个一个元素
//返回值:删除的元素
// arrObj . push(元素1,元素2,....) 在数组的尾部添加一个或多个元素多 个元素之间用逗号隔开
// arrObj .unshift(元素1,元素2,....) 在数组的头部添加一个或多个元素多 个元素之间用逗号隔开
// 返回值: 新数组的长度
//应用
// 重复项去除
//方案一
// var arr1 = [100, 80, 50, 'hello',100, true, 1];
// var arr2 = [];
// arr1.forEach(function (v) {
// if (arr2.indexOf(v) === -1) {
// arr2.push(v);
// }
// })
// console.log(arr2);
//方案二
var arr1 = [100, 80, 50, 'hello', 100, true, 1];
var rers = arr1.filter(function (v, i) {
return arr1.indexOf(v) === i;
})
console.log(rers);
</script> -->
<!-- <script>
//数组方法
//sort() 方法用于对数组的元素进行排序。
//arrayObject.sort(sortby)
// sort() 方法用于对数组的元素进行排序。
// 排序顺序可以是字母或数字,并按升序或降序。
// 默认排序顺序为按字母升序。
// 数字升序
var arr = [40, 100, 1, 5, 25, 10];
var arr2 = arr.sort(function (a, b) { return a - b });
console.log(arr2);
// 数字降序
var arr3 = [40, 100, 1, 5, 25, 10];
var arr4 = arr3.sort(function (a, b) { return b - a });
console.log(arr4);
//字母升序
var arr5 = ["Banana", "Orange", "Apple", "Mango"];
var arr6 = arr5.sort();
console.log(arr6);
// 字母降序
var arr7 = ["Banana", "Orange", "Apple", "Mango"];
arr7.sort();
var arr8 = arr7.reverse();//reverse() 方法用于颠倒数组中元素的顺序。
console.log(arr8);
</script> -->
<script>
// splice() 方法用于添加或删除数组中的元素。
// 在数组第三个位置添加新元素
var arr3 = ["Banana", "Orange", "Apple", "Mango"];
var arr4 = arr3.splice(2, 0, "Lemon", "Kiwi");
console.log(arr3);
console.log(arr4);//删除的元素组成的数组
//移除数组的第三个元素,并在数组第三个位置添加新元素:
var arr1 = ["Banana", "Orange", "Apple", "Mango"];
var arr2 = arr1.splice(2, 1, "Lemon", "Kiwi");
console.log(arr1);
console.log(arr2);//删除的元素组成的数组
//从第三个位置开始删除数组后的两个元素:
var arr5 = ["Banana", "Orange", "Apple", "Mango"];
var arr6 = arr5.splice(2, 2);
console.log(arr5);
console.log(arr6);//删除的元素组成的数组
// splice去重
var arr = [true, 10, 6, 6, 9, 9, 9, "hello", 6, true, 9];
for (var i = 0; i < arr.length; i++) {
for (var j = i + 1; j < arr.length; j++) {
if (arr[i] === arr[j]) {
arr.splice(j, 1);
j--;
}
}
}
console.log(arr);
//arr0bj.splice(参数1,参数2,参数3)..在参数1的位置删除参数2个元素,
//并把参数3里的元素添加到参数1
//参数1:必需,删除 / 添加元素位置
//参数2:必需。,删除元素的个数
//参数3:可选..添加的元素..多个元素之间用短号隔开
//返回值:删除的元素组成的数组
// slice截取某些功能类似效果
// arr0bj.slice(参 数1,参数2)
//参数1:必需开始截取的位置 可以为负
//参数2:可选结束截取的位置 可以为负 不包含结束
//返回值:截取到的数组
// arr0bj . copyWithin(参数1,参数2,参数3)
//参数1:必需复制到指定目标索引位置。
//参数2:可选元素复制的起始位置。
//参数3:可选元素复制的结束位置。 若省略,从开始赋值到结尾
//返回值:复制替换后的数组
// 复制数组的前面两个元素到后面两个元素上
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.copyWithin(2, 0);
console.log(fruits);//Apple,Banana,Mango,Orange
// every() 方法
// 用于检测数组所有元素是否都符合指定条件(通过函数提供)
// 所有元素都满足条件,则返回 true。有一个元素不满足,则整个表达式返回 false
// some() 方法
// 用于检测数组所有元素是否都符合指定条件(通过函数提供)
// 没有满足条件的元素,则返回false。有一个元素满足条件,则表达式返回true
// var arr = [10,1, "hello", 7, 8, "abc"];
var arr = [10, 8, 10, 70];
var res = arr.every(function (item, i, list) {
// console.log( item) ;
return item % 2 === 0;
})
// console.1og(res);
var res = arr.some(function (item) {
return item >= 80;
})
I
console.log(res);
// 更多:https://www.runoob.com/jsref/jsref-obj-array.html
</script>
</html>