顯示具有 JavaScript 標籤的文章。 顯示所有文章
顯示具有 JavaScript 標籤的文章。 顯示所有文章

使用 JavaScript 找到物件陣列中某屬性的最大值

這是個小技巧,使用 JavaScript/TypeScript 找到物件陣列中某項屬性的最大值,或者最小值也 OK。
假設我們有個兩個陣列如下:
var numArray = [1, 2, 3, 4];
var objArray = [
    { id: 1, name: 'A1' },
    { id: 2, name: 'A2' },
    { id: 3, name: 'A3' },
    { id: 4, name: 'A4' }
];

ES5

在 JavaScript ES5 中,可以使用這樣的寫法,找出陣列中的最大值
Math.max.apply(null, numArray) //4
首先 Math.max() 並利用 apply 的特性,將 numArray 陣列解構成一個一個的參數給 Math.max 去執行,藉此找到陣列中的最大值。
call 跟 apply 的差別在於 apply 第二個參數是陣列,而 call 是連續指定的參數
如果是要找物件陣列中某個屬性(例如 id)的最大值,可以搭配 Array.map() 改寫成這樣
Math.max.apply(null, objArray.map(function (o) {
    return o.id;
})) //4

ES6

在 JavaScript ES5 的時候,可以透過 apply 的特性來處理這次的問題,而到了 ES6 的時候,可以透過解構子 ... 來更優雅的處理這個問題,讓寫法變得更精簡。
找出陣列中的最大值
Math.max(...numArray) //4
找出物件陣列中的最大值,這裡使用 Arrow function 來改寫 Array.map() 的 CallBack function
Math.max(...objArray.map(p => p.id)) //4
越來越優雅且精簡的寫法,看起來好舒服唷~

[JavaScript] 常用的陣列(Array)操作大全

ARRAY OBJECT - 陣列物件

Array Object - 陣列宣告
範例說明
var team = new Array(9);宣告一個0~9共10個的Array,team[0], team[1]…
var team = new Array();宣告一個空Array,可任意新增值到Array中,例如,team[20] = 'KKBruce';即會產生team[0~19]的空Array,team[20]為指定值
var team = new Array('Bruce', 'Sherry', 'Daniel');直接帶值宣告team[0],team[1],team[2]三個Array
var team = ['Bruce','Sherry','Daniel'];透過[]符號直接宣告Array及值

第四種「var team = ['Bruce','Sherry','Daniel'];」的用法在JSON裡很重要,建議一開始就習慣使用此種方式來建立陣列及值。

Array物件的屬性和方法


Array Object - 屬性和方法
名稱說明
length屬性,取得陣列的元素個數,也就是陣列的長度
join()將陣列的元素使用字串方式顯示,每個陣列元素使用「,」符號分隔,可指定使用的分隔符號,a.join('-->')
reverse()將陣列的元素反轉,本來是陣列的最後一個元素成為第一個元素
sort()將陣列所有元素進行排序
concat(array)將參數的陣列合併到目前的陣列中
push()由push()與pop()來寶現堆疊(stack),stack.push('a');將a字串放入stack陣列
pop()先進後出,由最後一個Index來取出Array,例:push()進去a,b,c三個值,那pop會由c,b,a順序取出


JavaScript、JQuery 取得父親、兒子、兄弟元素

原生javascript方法:
var a = document.getElementById("dom");
      del_space(a); //清理空格
      var b = a.childNodes; //获取a的全部子节点;
      var c = a.parentNode; //获取a的父节点;
      var d = a.nextSibling; //获取a的下一个兄弟节点
      var e = a.previousSibling; //获取a的上一个兄弟节点
      var f = a.firstChild; //获取a的第一个子节点
      var g = a.lastChild; //获取a的最后一个子节点
jQuery方法:
jQuery.parent(expr) //找父亲节点,可以传入expr进行过滤,比如$("span").parent()或者$("span").parent(".class")

jQuery.parents(expr) //类似于jQuery.parents(expr),但是是查找所有祖先元素,不限于父元素

jQuery.children(expr) //返回所有子节点,这个方法只会返回直接的孩子节点,不会返回所有的子孙节点

jQuery.contents() //返回下面的所有内容,包括节点和文本。这个方法和children()的区别就在于,包括空白文本,也会被作为一个jQuery对象返回,children()则只会返回节点

jQuery.prev() //返回上一个兄弟节点,不是所有的兄弟节点

jQuery.prevAll() //返回所有之前的兄弟节点

jQuery.next() //返回下一个兄弟节点,不是所有的兄弟节点

jQuery.nextAll() //返回所有之后的兄弟节点

jQuery.siblings() //返回兄弟姐妹节点,不分前后

jQuery.find(expr)  //跟jQuery.filter(expr)完全不一样。jQuery.filter()是从初始的jQuery对象集合中筛选出一部分,而jQuery.find()的返回结果,不会有初始集合中的内容,比如$("p"),find("span"),是从p元素开始找,等同于$("p span").

[JavaScript] JS宣告陣列(Array)的方式

陣列是一種資料的集合,在javascript中,陣列也是物件。既然是物件,就能藉由建構子來進行物件的建立。
1.使用 new 敘述宣告陣列長度。
var team =new Array(10) ;
宣告一個0~9共10個的Array,team[0], team[1]…
var team = new Array();
宣告一個空Array,可任意新增值到Array中,例如,team[20] = 'KKBruce';即會產生team[0~19]的空Array,team[20]為指定值
var team =new Array("Welcome","To","Vic's","Blog"); 
使用 new 敘述宣告,並給定陣列初始值。這行程式會建立一個長度4的陣列物件
2.使用實字直接宣告。
var team=[];
這行程式會建立一個空的陣列物件
var team=[ "Hi", "Vic"] ;
建立一個長度為2的陣列物件。


3.建立匿名物件
var person = new Object();
person.Name = "Jeffrey";

person.Age = 18;