1.1基本資料型別:以number型別為例
number(***) //報錯,error: *** is not defined
number('***') //nan,nan是非數值,乙個特殊的數值
number(1) //1 乙個單純的數字
number('1') //1 乙個單純的數字
new number(1) //number,乙個物件,具有物件方法
也就是說number()建立的是基本資料型別,new number()建立的是乙個物件,同理string,boolean。
1.2複雜資料型別:object
object('x') // string ,乙個物件 (非數字一定要加引號)
new object('x') // string ,乙個物件
對於複雜型別object來說,兩者方法是一樣的,都是建立的物件。
ecmascript陣列和其他語言的陣列一樣,都是資料的有序列表,和其他語言不同的是js中的陣列的每一項都可以儲存任何資料型別,且陣列大小可以動態調整,即隨著資料的新增自動增長以容納新資料。
在js中,陣列的本質是原型鏈中有array.prtotype的物件。
let obj = // 看起來像陣列,但沒有array.prototype的,是偽陣列
a = [1, 2] // 是真的陣列,有array.prototype,也就是說有pop和push方法
常見偽陣列:arguments,dom api獲得的陣列:nodelist等
3.1 for的兩種遍歷
首先我們定義乙個複雜的陣列:
var obj =
var a = [1, 2, 'x', obj, 5, 'b'] // a是乙個陣列
第一種for遍歷:
for (let i=0; i3.2 foreach的遍歷
foreach是接受乙個函式為引數的api
a.foreach( function(x,y))
4.1 join 連線成乙個字串返回a = [1, 2, 3]
a.join() <=> a.join(',') // 字串 "1, 2, 3"
a.join('嘿嘿') // 字串 "1嘿嘿2嘿嘿3"
a + '' // 字串 "1, 2, 3"
a.tostring() // 字串 "1, 2, 3"
4.2 concat 聯結陣列var a = [1,2,3]; var b = [3,4,5];
var c = a.concat(b); //'1,2,3,3,4,5'
var d = a.concat(); //'1,2,3',將a陣列深拷貝給d陣列
4.3 map 對映,有返回值的陣列遍歷var a = [1,2,3];
a.map(function(value,key)) //[2,4,6];
a.map(value => value * 2); //[2,4,6]
4.4 filter 過濾陣列var a = [1,2,3,4,5];
a.filter(function(value,key)) //[3,4,5]
a.filter(function(value,key)) //返回偶數,[2,4]
4.5 sort 排序,reverse 反轉陣列
這兩個api都會 改變原陣列
var c = [2,3,1];
c.sort(); // [1,2,3],預設從小到大排序
c // [1, 2, 3]
c.sort(function(a,b)) // [3,2,1],從大到小排序
c.reverse() // [3, 2, 1] 因為sort已經更改了原陣列了,所以不是返回 [1, 3, 2]
4.6 reduce 歸併方法
迭代陣列中的所有項,構建乙個最終的返回值
4.6.1 reduce實現map方法
a = [2, 4, 6]
a.reduce(function(arr,n),)
// 2 的值賦給了arr,當前值n是2
// [4] 4
// [4, 8] 6
// [4, 8 ,12] 這是return返回的陣列arr
4.6.2 reduce實現filter方法a.reduce(function(arr,n)
return arr;
},)
4.6.3 reduce實現陣列求和var total = [ 0, 1, 2, 3 ].reduce(
( acc, cur ) => acc + cur
); // total === 6
4.6.4 reduce實現陣列去重let arr = [1,2,1,2,3,5,4,5,3,4,4,4,4];
let result = arr.sort().reduce((init, current)=>
return init;
}, );
console.log(result); //[1,2,3,4,5]
es6實現陣列去重:
let array = array.from(new set([1,2,1,2,3,5,4,5,3,4,4,4,4]));
//set資料結構,類似於陣列,但是它成員都是唯一的
//靜態方法array.from,可以把類似陣列的物件轉換為陣列
console.log(array); //[1,2,3,4,5]
4.6.5 reduce實現陣列計數
計算字串中每個元素出現次數:
var arrstring = 'abcdaabc1331';
arrstring.split('').reduce(function(res, cur) , {}) // ,空元素也是可以計算的
4.7 splice 陣列的刪除,插入與替換操作
splice方法會 改變原陣列
splice方法始終會返回乙個包含從原始陣列中刪除的項,沒有刪除就返回空陣列
arr.splice(開始位置,刪除個數 ) //從開始位置刪除,執行後arr陣列已改變,arr.splice返回刪除項
arr.splice(開始的位置, 刪除的個數, 插入的資料1, 插入的資料2, 3...)
4.8 slice 基於當前陣列建立新陣列
不改變原陣列
array.slice() //或array.slice(0),返回完整陣列
array.slice(4) //返回位置4到最後的資料
array.slice(4,8) //返回位置4到7的資料
JavaScript中的陣列
陣列 引數 返回值原陣列是否改變 1 向陣列尾部新增push 引數可以是乙個或多個 返回值是新增後陣列的長度 原陣列改變 2 刪除陣列的最後一項pop 沒有引數 返回值是刪除的那個數 原陣列改變 3 向陣列的頭部新增unshift 引數可以是乙個或多個 返回值是新增後陣列的長度 原陣列改變 4 刪除...
JavaScript中的陣列
陣列的宣告 宣告乙個陣列裡面是abc,宣告乙個空陣列物件 var arr1 newarray arr1 0 abc alert arr1 宣告乙個陣列長度是5,宣告乙個具有一定長度length的陣列 var arr2 newarray 5 alert arr2.length 宣告乙個陣列裡面有1 2...
javaScript 陣列中的方法
1 join 方法 array.join 方法可以把乙個陣列的所有元素轉換成字串,然後再把他們連線起來,可以指定乙個可選的字元來分隔結果字串中的元素。如果沒有指定分隔符,那麼就預設為逗號分隔元素。例如 var a var b a.join b 1,2,3 var b a.join b 1 2 3 2...