数组对象的方法(迭代)
什么是数组迭代?
答:数组迭代就是对数组的每一项都进行相应的操作。
例:
var arr1=[1,2,3];
var arr2=[4,5,6];
var arr3=[“A”,“B”,“C”,“D”,“E”,“F”,“G”];
every(函数) 检测数值元素的每个元素是否都符合条件
函数: //function(item){// item 数组元素}
console.log(arr1.every(function(item){
//item 数组元素
console.log(item);// 1
console.log(item>0);// true
console.log(item < 0);// false
return item>0
}))
some(函数) 检测数组元素中是否有元素符合指定条件
console.log(arr1.some(function(item){
item:数组元素
// console.log(item>0);
return item>10
}))
filter(函数) 检测数值元素,并返回符合条件所有元素的数组
console.log(arr1.filter(function(item){
//item:数组元素
return item>10&&item< 20
}))
forEach() 数组每个元素都执行一次回调函数
函数 function(value,index,arr){}
//value:数组元素的值
index:索引
arr:数组本身
arr1.forEach(function(val,index,arr){
// console.log(val,index,arr);
// console.log(arr7);
})
map() 通过指定函数处理数组的每个元素,并返回处理后的数组
console.log(arr1.map(function(item){
return item=10
}))
reduce(函数) 将数组元素计算为一个值(从左到右
function(total,val){}
total:总数
val:每一项的值
console.log(arr1.reduce(function(sum,val){
sum+=val;
return sum/9;
}))
toString() 把数组转换为字符串,并返回结果
console.log(arr3.toString());
// valueOf() 返回数组对象的原始值
console.log(arr3.valueOf());
//
JS数组的排序方法
-sort()
-冒泡排序
-选择排序
sort() 对数组元素进行排序 (理解不了就背下来 要记住)
var arr6=[4,5,6,40,50,60]
给sort(函数) 添加函数 比较函数
function up(a,b){ //up也可以写paixu 现在是从小到大升序 所以是用了up
if(a > b){
return -1
}else if(b > a){
return 1
}else{
return 0
}
}
functiondown(a,b){ // 降序用down
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));
冒泡排序
升序:将第一个元素与后续元素进行比较,如果前一个元素>后一个元素,值大的元素向后顺位,下一次拿这个值大的值于后续元素进行比较,如果前一个>后一个,就换位置,直到确定最大的元素
选出第二大的元素
选出第三大的元素
…
最后两个元素进行比较
下次对比的次数 比 上次对比的次数减一
var arr=[3,4,2,1]
for(var j=o; j< arr.length; j++){
console.log(arr[i]);// 打印所有的元素
for(var j=0; j < arr.length; j++){
conslole.log(arr[j])
//需要arr[i]和 arr[j]进行比较
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] he 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] he 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);
//封装
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));
将两个变量互换值 可以再另外声明一个变量
var a=10;
var b=20;
var c;
c=a;
a=b;
b=c;
console.log(a,b);
选择排序
选择排序::先定义最大值或最小值,然后将每个数组项与最值比较,取最大值放到元素的最左或者最右端,层层比较,互换元素下标位置,再赋值
(假设x为最大值, x和每个数组项进行对比,如果比x大,互换元素的下标)
var arr=[3,4,2,1];
for(var i=0; i < arr.length-1; i++){
//循环多少次
// 假设最值的索引
var max = i; // 第一个元素为最值
for(var j=j+1; j < arr.length; j++){
if(arr[j] > arr[max]){
max = j
}
}
var k=arr[i];
arr[i]=arr[max];
arr[max]=k;
}
console.log(arr);
// 封装
function choose(arr){
var arr=[3,4,2,1];
for(var i=0; i < arr.length-1; i++){
//循环多少次
// 假设最值的索引
var max = i; // 第一个元素为最值
for(var j=j+1; j < arr.length; j++){
if(arr[j] > arr[max]){
max = j
}
}
var k=arr[i];
arr[i]=arr[max];
arr[max]=k;
// console.log(arr);
}
return arr
}