Day 16 - Array Methods

map()

和 forEach 很像,不同处在於 forEach 没有回传值,使用 map 时会 return 一个新的阵列,所以要用一个变数去接住它产生的新阵列

let skill = ["Java","C#","JavaScript"];
let UpperSkill = skill.map(function(i){
    return i.toUpperCase();
});
console.log(UpperSkill); // ["JAVA","C#","JAVASCRIPT"]

Or 箭头函式

let arr = [ 1, 2, 3, 4 ];
let newArr = arr.map(i => i * 2);
console.log(newArr); // [2, 4, 6, 8 ]

find()

如果找到阵列中符合条件的第一个结果就回传,return 後面要放条件

let skill = [
  {language:"Java",rating:9.5},
  {language:"C#",rating:7.0},
  {language:"JavaScript",rating:8.5}
];
let result = skill.find(i=>{
  return i.rating > 7.0;
})
console.log(result); // {language:"Java",rating:9.5}

如果找不到符合条件的,用 find() 时会回传 undefined

let skill = [
  {language:"Java",rating:9.5},
  {language:"C#",rating:7.0},
  {language:"JavaScript",rating:8.5}
];
let result = skill.find(i=>{
  return i.rating > 10;
})
console.log(result); // undefined

filter()

find() 很像,差别在於 filter() 回传的是全部符合条件的结果

let skill = [
  {language:"Java",rating:9.5},
  {language:"C#",rating:7.0},
  {language:"JavaScript",rating:8.5}
];
let result = skill.filter(i=>{
  return i.rating > 7.0;
})
console.log(result); // [{language:"Java",rating:9.5},{language:"JavaScript",rating:8.5}]

如果找不到符合条件的,用 filter() 时会回传一个空阵列

let skill = [
  {language:"Java",rating:9.5},
  {language:"C#",rating:7.0},
  {language:"JavaScript",rating:8.5}
];
let result = skill.filter(i=>{
  return i.rating > 10;
})
console.log(result); // []

includes()

用来判断阵列中是否包含某个元素,有的话回传 true,没有则回传 false。
可以放入两个参数,第一个参数为要寻找的元素,第二个参数为开始搜寻的元素索引值。
例如:

const arr = ['apple', 'banana', 'orange'];
console.log(arr.includes('apple')); // true (阵列中有 apple 所以回传 true)
console.log(arr.includes('apple',0)); // true (阵列中有包含 apple,且 apple 的索引值为 0,所以回传 true)
console.log(arr.includes('apple',1)); // false (阵列中虽包含 apple,但 apple 的索引值非为 1,所以回传 false)
console.log(arr.includes('orange',-1)); // true (阵列中有包含 orange,且 orange 的索引值为 -1,所以回传 true)
console.log(arr.includes('guava')); // false (阵列中没有 guava 所以回传 false)

some()

如果有任何一个条件符合,就 return true ,如果没有任何符合条件的则 return false。

let skill = [
  {language:"Java",rating:9.5},
  {language:"C#",rating:7.0},
  {language:"JavaScript",rating:8.5}
];
let result = skill.some(i=>{
  return i.rating > 9.0;
})
console.log(result); // true

有一个结果 > 9.0,所以 return true
假如把条件改成 > 10.0,则会因为找不到符合的条件而回传 false。

every()

如果每一个条件都符合,就 return true ,如果没有每个条件都符合则 return false。

let skill = [
  {language:"Java",rating:9.5},
  {language:"C#",rating:7.0},
  {language:"JavaScript",rating:8.5}
];
let result = skill.every(i=>{
  return i.rating > 9.0;
})
console.log(result); // false

因为并不是每个结果都 > 9.0,所以 return false

sort()

排列,使用 sort() 要注意的是, sort() 会改变原本的阵列

let fruit = ["Orange","Apple","Guava"];
fruit.sort(); // 使用 sort() 会改变原阵列
console.log(fruit); // ['Apple', 'Guava', 'Orange']

如果在阵列里放数字,让 sort() 去排序的话,结果会照字串比大小的方式,只比第一个,所以会发现阵列中的数字并没有按照大小来排,而是只照第一个数字的大小排列

let num = [54,11,24,56,64,78,34,7,75];
console.log(num.sort()); // [11,24,34,54,56,64,7,75,78]

所以排列数字时要用另一种方式,在 sort() 里面给它一个 callback function ,并在里面放两个参数:

  • 由小到大排列:
sort((a, b)=>{
    return a-b;
})

ex:
将阵列里的数字由小到大排列

let num = [54,11,24,56,64,78,34,7,75];
num.sort((a, b)=>{
  return a - b; 
})
console.log(num); // [7,11,24,34,54,56,64,75,78]

将阵列里的字串长度由小到大排列

let text = ["php","C#","phython","JavaScript"];
text.sort((a, b)=>{
  return a.length - b.length;
})
console.log(text); // ["C#","php","phython","JavaScript"]
  • 由大到小排列:
sort((a, b)=>{
    return b-a;
})

ex:
将阵列里的数字由大到小排列

let num = [54,11,24,56,64,78,34,7,75];
num.sort((a, b)=>{
  return b - a; 
})
console.log(num); // [78,75,64,56,54,34,24,11,7]

将阵列里的字串长度由大到小排列

let text = ["php","C#","phython","JavaScript"];
text.sort((a, b)=>{
  return b.length - a.length;
})
console.log(text); // ["JavaScript","phython","php","C#"]

<<:  [Day2] 何谓 LHS、RHS 错误?

>>:  Day 3 - Using the Gmail SMTP Server to Send Emails with ASP.NET Web Forms C# 使用 Gmail 做为邮件服务器来寄信

【从零开始的Swift开发心路历程-Day13】打造自己的私房美食名单Part2

昨天新增完XIB档後,今天要来让TableViewCell显示餐厅资讯 因为我是嘉义人~所以来推荐大...

[Day 21] 阿嬷都看得懂的满版横幅怎麽写与 normalize.css

阿嬷都看得懂的满版横幅怎麽写与 normalize.css 昨天我们拿出了古早时代的贴纸簿,并且介绍...

JavaScript入门 Day03_输出文字

那今天终於要来开始打code了!! 就从最基本的 Hello World开始吧 每一款程序语言最基本...

Day 29 [Python ML、资料清理] 处理输入资料不一致

Get our environment set up # modules we'll use imp...

Day3 JDK、JRE 和 JVM 的区别

JDK、JRE 和 JVM 是 Java 编程语言的核心概念!在编程中不使用这些概念,但是作为 Ja...