[想试试看JavaScript ] 阵列一些操作阵列好用的方法 (三)

阵列-一些操作阵列好用的方法 (三)

这篇整理一些常用的阵列方法

sort()

sort() 会对阵列所有的元素进行排列,并回传此阵列

语法:

可以直接使用 sort

Array.sort()

或者参数使用compareFunction

Array.sort(compareFunction)

范例:

var a=[3,5,7,9,1,2]
console.log(a.sort());  // 回传排序好的阵列,[1, 2, 3, 5, 7, 9]
console.log(a); // [1, 2, 3, 5, 7, 9]

如果直接使用 sort,没有使用 compareFunction,预设会将元素转成字串,并使用unicode来判断,所以也会造成某些数字判断错误

var b=[1,2,6,4,5,2,9,11,13,7];
console.log(b.sort()); // [1, 11, 13, 2, 3, 4, 5, 6, 7, 9]

使用 compareFunction 可以避免这个问题

sort() 的参数里面可以放一个函式,函式有两个参数。

语法:

function compareFunction(x,y){
	return x-y // 这样数字会由小排到大
}

范例:

var b=[1,2,6,4,5,2,9,11,13,7];
b.sort(function(x,y){
	return x-y
});
console.log(b); // [1, 2, 3, 4, 5, 6, 7, 9, 11, 13]
b.sort(function(x,y){
	return y-x
});
console.log(b); // [13, 11, 9, 7, 6, 5, 4, 3, 2, 1]

compareFunction 实际是依照回传值来排序

compareFunction(x,y) 回传值如果小於 0(负数),表示 x 会排在 y 前面

compareFunction(x,y) 回传值如果大於 0(正数),表示 y 会排在 x 前面

所以 compareFunction 也可以写成这样

function compareFunction(x,y){
	if(x<y) return -1;
	if(x>y) return 1;
	return 0;
}

也可以使用 console.log 观察一下,是怎样比较的

function compareFunction(x,y){
	console.log(x,y);
	if(x<y) return -1;
	if(x>y) return 1;
	return 0;
}

fill()

fill() 可以将阵列中的元素替换成指定的值,并且回传改变後的阵列

语法

fill() 有三个参数

  1. value,想替换的值
  2. start (选填),从什麽位置开始替换,不设定就替换全部
  3. end (选填),停止替换的元素的前一个位置

可以直接使用

Array.fill()

或使用参数

Array.fill(value,start,end)

范例:

var a=[1,2,3,4,5,6,7,8];
console.log(a.fill(null)); // [null,null,null,null,null,null,null,null]

var b=[1,2,3,4,5,6,7,8];
console.log(b.fill('b',2,6)); //[1,2,'b','b','b','b',7,8]

<<:  Day13 - 辨识模型 part2

>>:  [Day 16] 整理code

Day 28:IRQ (Part 2) - 中断突进!简单的 IRQ 程序

接下来的实验中,会写一个把 GPIO 当作是中断的来源的程序。这个 GPIO 由 Arduino 发...

基础建设:分散式服务追踪

微服务系统之间的呼叫链结可能错纵复杂,除了系统日志(Logging)和监控指标(Metrics),链...

[Day28] 第二十八课 Azure灾害复原(DRaaS)-1[进阶]

先前提到Azure有很多客户拿来做第三份备份存放外,异地备援陆续也有不少客户来询问 了解,原因就在异...

[Day-03] - Spring Framework Introduction

Abstract 在Spring Framework尚未被开发出来时,Java EE是以 Sun公司...

[Day 2] 一个非同步案例 httpServer

前言 或许有些人会有所困惑, 同步非同步的实践难在哪里, 为甚麽要一直巴拉巴拉, 但事实上, 非同步...