JavaScript数组的方法(迭代)
var arr1=[7,8,9,11,28,36,54,88,96];
var arr2=[12,18,24];
var arr3=["O","P","Q","R","S","T","U"];
// every(函数)检测数值元素的每个元素是否都符合条件
函数:console.log(arr1.every(function(item){
return item>0 //true
}))
// some(函数) 检测数组元素中是否有元素符合指定条件。
console.log(arr1.some(function(item){
return item>11 //true
}))
// filter(函数) 检测数值元素,并返回符合条件所有元素的数组。
console.log(arr1.filter(function(item){
return item>11&&item<90
}))
// forEach(函数) 数组每个元素都执行一次回调函数。
// 函数:function(value,index,arr){}
// value:数组元素的值
// index:索引
// arr:数组本身
var arr9=[];
arr1.forEach(function(val,index,arr){
arr9.push(val+11)
})
console.log(arr9)
// for(var i=0;i<arr1.length;i++){
// console.log(arr1[i],i,arr1)
// }
// map() 通过指定函数处理数组的每个元素,并返回处理后的数组。
console.log(arr1.map(function(item){
return item+11
}))
// reduce(函数) 将数组元素计算为一个值(从左到右)。
// function(total,val){}
// total:总数
// val:每一项的值
console.log(arr1.reduce(function(sum,val){
sum+=val;
return sum/12;
}))
console.log(arr3.reduce(function(sum,val){
sum+=val
return sum
}))
// reduceRight(函数) 将数组元素计算为一个值(从右到左)。
console.log(arr3.reduceRight(function(sum,val){
sum+=val
return sum
}))
// ES6新增的方法
// keys() 返回数组的可迭代对象,包含原始数组的键(key)
// entires() 返回数组可迭代的对象
var mmm=arr2.entries()
console.log(mmm.next().value);
console.log(mmm.next().value);
console.log(mmm.next().value);
console.log(mmm.next().value);
var nnn=arr2.keys();
console.log(nnn.next().value);
console.log(nnn.next().value);
console.log(nnn.next().value);
console.log(nnn.next().value);
JavaScript数组的排序方法
var arr = [7, 8, 9, 2, 40, 60, 88, 5, 6, 'x', 15, 25, 35, "M", "H", "R", "e", "k"];
var arr2 = [12, 16, 18];
var arr3 = ["U", "V", "W", "X", "Y", "Z", "Q"];
var arr5 = ["嘎嘎", 'g', 't', 'r', 13, 12, 11];
// sort() 对数组元素进行排序
console.log(arr2.sort());
console.log(arr3.sort());
console.log(arr5.sort());
// 依照 ASCII (字典) 数组的每一项都会执行toString(),得到字符串,对字符串排序
var arr6 = [6, 7, 8, 65, 75, 85];
console.log(arr6.sort());
// 2.给sort(函数) 添加函数 比较函数
// function up(a, b) {
// if (a < b) {
// return -1
// } else if (b < a) {
// return 1
// } else {
// return 0
// }
// }
// function down(a, b) {
// if (a > b) {
// return -1
// } else if (b > a) {
// return 1
// } else {
// return 0
// }
// }
// 简写
function up(a,b){
return a-b
}
function down(a,b){
return b-a
}
console.log(arr6.sort(up))
console.log(arr6.sort(down))
JavaScript数组的冒泡排序
var arr = [3, 4, 2,1];//[3,2,1,4][2,1,3,4][1,2,3,4]
// 升序:将第一个元素于后续元素进行比较,如果前一个元素大于后一个元素互换位置,下一次拿上一次大的值于后续元素进行比较,如果前一个元素大于后一个元素互换位置,知道确定最大的元素
// 选出第二大的元素
// 选出第三大的元素
// ...
// 最后两个元素进行对比
// 下次对比次数比上次对此次数减一
for (var i = 0; i < arr.length - 1; i++) {
// 循环比较的次数
for (var j = 0; j < arr.length - i - 1; j++) {
// console.log(arr[j])
// 需要arr[j] 和 arr[j+1]进行比较
if (arr[j] > arr[j + 1]) {
// 互换位置
// console.log("互换位置");
var k;
k = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = k;
}
}
console.log(arr)
}
// 将外层for循环拆解
// 当i=0时
// for (var j = 0; j < arr.length-1; j++) {
// // console.log(arr[j])
// // 需要arr[j] 和 arr[j+1]进行比较
// if (arr[j] > arr[j + 1]) {
// // 互换位置
// console.log("互换位置");
// var k;
// k=arr[j];
// arr[j]=arr[j + 1];
// arr[j + 1]=k;
// }
// }
// console.log(arr);
// 当i=1时;
// for (var j = 0; j < arr.length-2; j++) {
// // console.log(arr[j])
// // 需要arr[j] 和 arr[j+1]进行比较
// if (arr[j] > arr[j + 1]) {
// // 互换位置
// console.log("互换位置");
// var k;
// k=arr[j];
// arr[j]=arr[j + 1];
// arr[j + 1]=k;
// }
// }
// console.log(arr)
// 当i=2时;
// for (var j = 0; j < arr.length-3; j++) {
// // console.log(arr[j])
// // 需要arr[j] 和 arr[j+1]进行比较
// if (arr[j] > arr[j + 1]) {
// // 互换位置
// console.log("互换位置");
// var k;
// k=arr[j];
// arr[j]=arr[j + 1];
// arr[j + 1]=k;
// }
// }
// console.log(arr)
// 两个变量互换值
var a=10;
var b=20;
var c;
c=a;
a=b;
b=c;
// console.log(a,b)
// 封装
function babel(arr) {
for (var i = 0; i < arr.length - 1; i++) {
// 循环比较的次数
for (var j = 0; j < arr.length - i - 1; j++) {
// console.log(arr[j])
// 需要arr[j] 和 arr[j+1]进行比较
if (arr[j] > arr[j + 1]) {
// 互换位置
// console.log("互换位置");
var k;
k = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = k;
}
}
// console.log(arr)
}
return arr
}
var arr2=[1,2,4,5,1,2,1,3,5,1,81,282,18]
console.log(babel(arr));
console.log(babel(arr2));
JavaScript数组的选择排序
var arr = [3, 4, 2, 1]; // [1, 4, 2, 3] [1, 2, 4, 3] [1, 2, 3, 4]
// 选择排序:先定义最大值或最小值,然后将每个数组项于最值比较,取最值放到元素的最(左或右)端,层层比较,互换元素下标位置,再赋值。
// 设:x为最大值,x和每一个数组项进行对比,如果比x大,互换元素的下标
for (var i = 0; i < arr.length - 1; i++) {
// 假设最值的索引
var min = i; //第i个元素为最值
// min=0;
for (var j = i + 1; j < arr.length; j++) {
// j=1 2 3
if (arr[j] < arr[min]) {
min = j;// 取最小值的索引
// console.log(j)
}
}
var k = arr[i];
arr[i] = arr[min];
arr[min] = k;
console.log(arr);
}
// console.log(arr);
// 封装
function choose(arr) {
for (var i = 0; i < arr.length - 1; i++) {
// 假设最值的索引
var min = i; //第i个元素为最值
for (var j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[min]) {
min = j;
console.log(j)
}
}
var k = arr[i];
arr[i] = arr[min];
arr[min] = k;
// console.log(arr);
}
return arr
}
console.log(choose(arr));