跳到主要內容
004
+ 主題 - array應用
+ 應用 -
- Q | Filter the list of inventors for those who were born in the 1500's取得value,利用filter篩選出第一張表單中,出生於16世紀的科學家
filter:保留功能。從原陣列進行篩選,產生新陣列,但又不影響原陣列。
return true; 表示保留 return false; 表示不留下
A |
let InvFilter = inventors.filter ( inv => {
return inv.year>=1500 && inv.year<1600;
})
console.log ( InvFilter );
- Q | Give us an array of the inventors' first and lastname 利用map建立個新陣列是包含科學家的姓名
map : 製造功能。轉換原陣列的元素,但又不影響原陣列。
return true; 則將每個元素轉換為true
A |
let InvMap = inventors.map ( inv => {
return inv.first + ', ' + inv.last;
})
console.log ( InvMap );
- Q | Sort the Inventors by birthdate, oldest to youngest 利用map建立個新陣列是包含科學家的姓名
sort : 排序功能。改變原陣列。一定要加callback function,效能上無法保證,可能會出錯。兩個參數,互相比較。
function(a,b){
return a-b; 若<0則升冪排序,a在b前 若>0則b在a前 若=0則不變
}
A |
let InvSort = inventors.sort ( function ( a, b ){
return a.year - b.year;
})
console.log ( InvSort );
- Q | How many year did inventors live 利用reduce建立個新陣列是所有科學家的壽命加總
reduce : 累積功能。將原陣列的每個元素傳入function,化為單一值,做出新陣列。
A |
let live=inventors.reduce ( function ( total , inv ){
return total + inv.passed - inv.year ;
} ,0 )
如果不用reduce的寫法
let total=0;
inventors.forEach ( inv => {
total += inv.passed - inv.year;
});
- Q | Sort the inventors by years live 利用sort依照壽命長短排序A |let InvSortLive = inventors.sort ( function ( a , b ){
return ( a.passed - a.year ) - ( b.passed - b.year );
})
- Q | Sort the people alphabetically by last name 利用sort依照姓氏的字母順序排序
split : 切字串。A |let SortPeople = people.sort ( function ( a , b ){
let aAry = a.split(", ");
let bAry = b.split(", ");
return aAry[1]>bAry[1] ? 1 : 0;
})
- Q | Sum up the instances of each of these 利用reduce計算每個元素有幾個,放進新產生的物件之中
A |let Sum = data.reduce ( function ( obj , item ){
if ( !obj [ item ] ){
obj [ item ] =1;
} else {
obj [ item ] ++;
});
return obj;
},{});
console.log( Sum );
如果不用reduce的寫法
let obj = {};
data.foreach ( item => {
if ( !obj [ item ] ){
obj [ item ] =1;
} else {
obj [ item ] ++;
});
console.log ( obj );
留言
張貼留言