3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
此篇文章瀏覽量: 771 此文章摘錄自’JavaScript優良部分’一書,純粹個人備忘之用。如欲看全文,請參閱該書。 陣列實字 // 陣列實字 var empty = []; var numbers = [ 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine' ]; empty[1]; // undefined numbers[1]; // 'one' //物件實字 var numbers_object = { '0': 'zero' , '1': 'one' , '2': 'two', '3': 'three', '4': 'four' , '5': 'five', '6': 'six' , '7': 'seven', '8': 'eight', '9': 'nine' }; 以上numbers與number_object都是包含十項特性的物件,這些特性也具有完全相同的名稱與值;但numbers繼承自Array.prototype,而number_object卻繼承自Object.prototype;所以,numbers繼承了較多有用的方法。還有numbers也具有length特性,這是number_object所沒有的特性。 在多數語言中,陣列元素都必須為相同型別。JavaScript則允許陣列包含各種型別混合的值: var misc = [ 'string', 98.6, true, false, null, undefined, ['nested', 'array'], {object: true}, NaN, Infinity ]; misc.length // 10 length特性 每個陣列都有一個length特性。是陣列中最大的整數特性名稱加1: var myArray = []; myArray.length // 0 myArray[1000000] = true; myArray.length // 1000001 // myArray只包含一個特性 // 假設numbers現在改成['zero', 'one', 'two'] numbers.length = 3; // 新的陣列元素,可藉由指派給陣列目前的length而被附加至陣列尾端: numbers[numbers.length] = 'shi'; // numbers成為['zero', 'one', 'two', 'shi'] // 有時候,使用push方法更易於達成相同效果: numbers.push('go'); // numbers成為['zero', 'one', 'two', 'shi', 'go'] 刪除 // numbers目前是['zero', 'one', 'two', 'shi', 'go'] delete numbers[2]; // number成為['zero', 'one', undefined, 'shi', 'go'] // 但通常我們會想把右側每個元素的名稱同步減1,所以最好改成以下: numbers.splice(2, 1); // number成為['zero', 'one', 'shi', 'go'] splice方法,它可以對陣列動手術,刪除某些元素,並以其它元素代替。第一個引數是陣列裡的序號;第二個引數是欲刪除的元素數量。任何附加的引數,都將被插入陣列中。 列舉 var i; for(i = 0; i < myArray.length; i += 1){ document.writeln(myArray[i]); } 困惑之處 JavaScript程式的常見錯誤之一,是在該用陣列時用了物件,或是該用物件時用了陣列。規則很簡單:當特性名稱是連續小整數時,就應該用陣列;否則應該用物件。 JavaScript對於陣列與物件的差別,其實也搞不太清礎。typeof運算子回報的陣列型別是’object’,更是大幫倒忙。 JavaScript沒有很好的陣列與物件區分機制。所以我們必須自訂is_array函式,可繞過這項缺陷: var is_array = function(value){ return value && typeof value === 'object' && typeof value.length === 'number' && typeof value.splice === 'function' && !(value.propertyIsEnumerable('length')); }; 方法 JavaScript提供一組對陣列行動的方法。這些方法就是儲存在Array.prototype裡的函式,假設要新增一個array方法至Array.prototype來擴充: Array.method('reduce', function(f, value){ var i; for(i = 0; i < this.length; i += 1){ value = f(this[i], value); } return value; }); //建立一個數值陣列 var data = [4, 8, 15, 16, 23, 42]; //建立兩個簡易函式。其中一個相加兩個數字;另一個相乘兩個數字 var add = function(a, b){ return a + b; }; var mult = function(a, b){ return a * b; }; // 呼叫資料的reduce方法,傳給add函式 var sum = data.reduce(add, 0); // sum為108 // 再度呼叫reduce方法,這次傳入mult函式 var product = data.reduce(mult, 1); // 乘積為7418880 若覺得文章有幫助,請多分享,讓其他同好也能吸收網站技能知識。 Tweet

本文由carlos-studiocom提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦