JS第七天学习(数组方法、数组排序方法)

一、数组的方法

var a=[1,2,3,4]
var b=[5,6,7,8,9]
var c=['A','B','C']

1.every()

检测数值元素的每个元素是否符合条件

	console.log(a.every(function(item){
		return item>0
	}))

2.some()

检测数组中是否有元素符合条件

	  console.log(b.some(function(item){
	          
	          return item>5
	      }))

3.filter()

检测数值元素,并返回所有符合条件的数值

	    console.log(a.filter(function(item){
	          // item 数组元素
	          return item>1&&item<4
	      }))

4.forEach(函数)

数组每个元素都执行一次回调函数
//函数:function(value,index,arr){}
// value:数组元素的值
// index:索引
// arr:数组本身
var a1=[];
a.forEach(function(val,index,arr){

	          a1.push(val+5)
                                  }))
	      console.log(a1)

5.map()

通过指定函数处理数组的每个元素,并返回处理后的数组

	    console.log(b.map(function(item){
	            return item+100
	        }))

6.educe(函数)

(将数组元素计算为一个值(从左到右)

	    // function(total,val){}
	    // total:总数
	    // val:每一项的值
	     console.log(b.reduce(function(sum,val){  
	            sum+=val;
	            return sum/4;
	        }))

7.educeRight(函数)

将数组元素计算为一个值(从右到左)

	  console.log(a.reduceRight(function(sum,val){
	          sum+=val;
	          return sum;
 
			  }))

8.ES6新增的方法

keys()返回数组的可迭代对象,包含原始数组的键
entires()返回数组可迭代的对象
toString()数组转换为字符换,并返回结果
valueof()返回数组对象原始值
isArray()判断是否为数组

二、JS数组的排序方法

var arr = [4, 5, 80, 99, 2, 3, ‘x’, 10, 20, 30, “E”, “a”, “b”];
var arr2 = [4, 5, 6];
var arr3 = [“A”, “B”, “C”, “D”, “E”, “F”, “G”];
var arr5 = [“你好”, ‘a’, ‘b’, ‘c’, 7, 5, 3]

- sort() 对数组元素进行排序

console.log(arr2.sort());
console.log(arr3.sort());
console.log(arr5.sort());
依照 ASCII (字典) 数组的每一项都会执行toString(),得到字符串,对字符串排序
var arr6 = [4, 5, 6, 40, 50, 60];
console.log(arr6.sort()); //[4, 40, 5, 50, 6, 60]

2.给sort(函数) 添加函数 比较函数

(1)比较大小(大于的时候)
function up(a, b) {
if (a < b) {
return -1
} else if (b < a) {
return 1
} else {
return 0
}
}
(2)比较大小(小于的时候)
function down(a, b) {
if (a > b) {
return -1
} else if (b > a) {
return 1
} else {
return 0
}
}
(3) 简写形式
function up(a,b){
return a-b
}
function down(a,b){
return b-a
}
console.log(arr6.sort(up))
console.log(arr6.sort(down))

3.冒泡排序

升序:将第一个元素于后续元素进行比较,如果前一个元素大于后一个元素互换位置,下一次拿上一次大的值于后续元素进行比较,如果前一个元素大于后一个元素互换位置,知道确定最大的元素
步骤:
选出第二大的元素
选出第三大的元素

最后两个元素进行对比
下次对比次数比上次对此次数减一

                  var a=[1,2,4,5,1,2,1,3,5]
(1)实例
                           for(var i=0;i<=a.length-1;i++){
		        for(var j=0;j<=a.length-i-1;j++){
			            if(a[j]>a[j+1]){
			 	var k;
				k=a[j];
				a[j]=a[j+1];
				a[j+1]=k;
			                            }
		                                 }
		                              console.log(a);
	                              }

(2)封装

	      var arr=[1,5,3,4,7,80,80,6,70,78,65]
	               function babel(arr) {
	               for (var m = 0; m < arr.length - 1; m++) {
	               for (var n = 0; n < arr.length - m - 1; n++) {
	               if (arr[n] > arr[n + 1]) {
	                    var h;
	                    h = arr[n];
	                    arr[n] = arr[n + 1];
	                    arr[n + 1] = h;
	                                 }
	                               }
	                            }
	                     return arr
	                   }
            var arr2=[5,6,4,7,4,6,3,435,4,2,52,2452,100]
              console.log(babel(arr));
              console.log(babel(arr2));

4.选择排序

先定义最大值或最小值,然后将每个数组项于最值比较,取最值放到元素的最(左或右)端,
层层比较,互换元素下标位置,再赋值。
设:x为最大值,x和每一个数组项进行对比,如果比x大,互换元素的下标

(1)实例
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;// 取最小值的索引
                        }
                                       }
                        var k = arr[i];
                        arr[i] = arr[min];
                        arr[min] = k;
                        console.log(arr);
}
(2) 封装
      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;
          }
      return arr
          }
      
      console.log(choose(arr));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值