• 回傳淺複製的 Array ,Array.prototype.slice()
  • 驗證其中一個元素是否符合規則,若符合則回傳 true Array.prototype.some()
  • 排序 Array Array.prototype.sort()

Array.prototype.slice()

淺複製 Array 並回傳,不會影響到原本的。 Array 原生型別會被完整複製,Array 裡面若有 object 的話,則只會複製參考位址,這表示參考位址的內容改變後,複製後的內容也會跟著改變。

參數說明

  • begin : 要從哪一個元素開始複製的 index (會包含該元素) (optional)
  • end : 要複製到哪一個元素的 index (不會包含該元素) (optional)
slice
  • js
1
2
3
4
5
var fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango'];
var citrus = fruits.slice(1, 3);

// fruits contains ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango']
// citrus contains ['Orange','Lemon']

Array.prototype.some()

驗證其中一個元素是否符合規則,若符合則回傳 true,這與 every 的功能很相似,差別在於

  • Array.prototype.some() 只要有一個符合條件,就回傳 true ,否則回傳 false
  • Array.prototype.every() 全部都要符合條件,才回傳 true ,否則回傳 false

參數說明

  • element : 當下元素的 value
  • index : 當下元素的 index ,從 0 開始
  • array : array 本身
some
  • js
1
2
[2, 5, 8, 1, 4].some(x => x > 10);  // false
[12, 5, 8, 1, 4].some(x => x > 10); // true

Array.prototype.sort()

排序 Array , 會改變原本 Array 的值。

sort的預設排序方式,是把元素轉成 string Unicode code 來排序,所以在排序數字大小的時候可能會出錯,例如[80, 9],因為”80”的 Unicode 在 “9” Unicode 的前面,所以排序的話 80 會在前。 為避免這個情況發生,排序數字一定要傳入 function 排序

function 說明 (optional)

  • 回傳負數表示 a 的元素會被排在 b 前面
  • 回傳正書表示 b 的元素會被排在 a 前面
  • 回傳 0 表示,保持原本的排序
function說明
  • js
1
2
3
4
5
6
7
8
9
10
function compare(a, b) {
if (a is less than b by some ordering criterion) {
return -1;
}
if (a is greater than b by the ordering criterion) {
return 1;
}
// a must be equal to b
return 0;
}

正向排序與反向排序 function 的寫法

排序方式
  • js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 正向排序
function compareNumbers(a, b) {
return a - b;
}

// 反向排序
function compareNumbers(a, b) {
return b - a;
}

// 使用方式
var numbers = [4, 2, 5, 1, 3];
numbers.sort(function(a, b) {
return a - b;
});
console.log(numbers);
// [1, 2, 3, 4, 5]

排序名字的方式

排序名字
  • js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var items = [
{ name: 'Edward', value: 21 },
{ name: 'Sharpe', value: 37 },
{ name: 'And', value: 45 },
{ name: 'The', value: -12 },
{ name: 'Magnetic', value: 13 },
{ name: 'Zeros', value: 37 }
];

// sort by name
items.sort(function(a, b) {
var nameA = a.name.toUpperCase(); // ignore upper and lowercase
var nameB = b.name.toUpperCase(); // ignore upper and lowercase
if (nameA < nameB) {
return -1;
}
if (nameA > nameB) {
return 1;
}

// names must be equal
return 0;
});

參考

參考連結