数组(待完成)
創(chuàng)建
?
字面量方式
var arr = []; var arr = ["成員1", 2];//可以是不同成員?
構(gòu)造函數(shù)方式
空的
var array = new Array();?
指定長度
var array2 = new Array(10);成員值都是undefined。此方式有技巧使用
雖然值是undefined,但join后不會出現(xiàn)undefined字符串
比如:
new Array(10).join('') // 依然返回空字符串 new Array(10).join('x') // 9個x new Array(10).join('<li></li>') // 9個li標(biāo)簽?
length
可讀寫屬性
讀操作
都懂...略過
?
寫操作
增操作(比之前多):相當(dāng)于末尾追加了成員,初始值為undefined
?
減操作(比之前少):少了多少相當(dāng)于 末尾刪了多少
數(shù)組對length屬性進(jìn)行減少的 寫操作,成員真的減少了。
有時候想,length屬性如果沒真正刪除,reverse反轉(zhuǎn)后是不是能把刪除的反過來?而實際上,
reverse反轉(zhuǎn)操作正常(強(qiáng)調(diào):正常指并沒有把刪掉的成員反轉(zhuǎn)過來)
?
div1.innerHTML = array.length;?
?
?
轉(zhuǎn)換
字符串轉(zhuǎn)數(shù)組-split
String.split([string])
?
給參情況
用字符串中指定子串 將 字符串 切割成 數(shù)組
'張,李,陳,黃'.split(',');//["張", "李", "陳", "黃"]?
空字符串情況
將每個字符分割成數(shù)組
'張,李,陳,黃'.split('');//["張", ",", "李", ",", "陳", ",", "黃"]?
不給參情況
返回只有原字符串一個成員的數(shù)組
'張,李,陳,黃'.split();//["張,李,陳,黃"]?
數(shù)組轉(zhuǎn)字符串-join
用指定字符串 將 數(shù)組 連接成 字符串
[ '張', '李', '陳', '黃' ].join('-');// '張-李-陳-黃'?
不帶參:
[ '張', '李', '陳', '黃' ].join();// '張,李,陳,黃'似乎默認(rèn)使用了逗號相連
也可以說是 直接將數(shù)組轉(zhuǎn)換成字符串
?
數(shù)組length=1
['張'].join('-');// '張'?
數(shù)組length=0
[].join('-').length===0;//true。看來是空字符串...集合轉(zhuǎn)數(shù)組-slice技巧
集合指的是那種有l(wèi)ength屬性的類數(shù)組對象
?
HTMLCollection 集合例子
這種集合ie678不支持,參數(shù)3不會影響HTMLCollection集合
?
對象模擬 例子
var obj = {0: 0,1: 1,length: 10 }; var arr = [].slice.call(obj, 0); arr.lenght; // 10這種支持包括ie6的所有。參數(shù)3如果給,將影響obj。不給或者負(fù)數(shù)都不影響
?
其他splice用法見?[splice增刪詳解]
?
數(shù)組轉(zhuǎn)字符串-toString
arr.toString() 相當(dāng)于?arr.join(',')
var arr = ['成員1', '成員2', {}]; arr.toString() //成員1,成員2,[object Object] arr.join(',') //成員1,成員2,[object Object]?
增成員
?
追加
?
底部-push
array.push("燒餅1");頭部-unshift
array.unshift("燒餅0");?
返回值
返回更改后的數(shù)組長度
?
指定位置增加
指定 索引位置增加
如原來位置存在元素,則覆蓋。。。
var arr=[]; arr[3]=1; console.log(arr.length);// 4?
刪成員
?
使用delete操作符
刪第一個
var arr=["張", "李", "陳", "黃"]; delete arr[0]; console.log(arr[0]);// undefined console.log(arr.length);// 4?
刪最后一個
var arr=["張", "李", "陳", "黃"]; delete arr[3]; console.log(arr[3]);// undefined console.log(arr.length);// 4?
兩個例子說明,只是把值換成了undefined了,length不變
但
使用for in無法循環(huán)出刪掉的成員了,如果強(qiáng)行賦值undefined,又能循環(huán)出來,看來真刪除了。
或者說這只是對象的特性而已,數(shù)組也是對象嘛
?
兼容性:包括ie6的所有
?
使用shift pop splice 刪除
?
見 [取成員]
?
通過設(shè)置length
var arr=["張", "李", "陳", "黃"]; arr.length=1; console.log(arr);//["張"] 。真的就只有這么一個了!!?
兼容性:包括ie6的所有
?
詳情 見 [length] 寫操作
?
改成員
根據(jù)索引覆蓋操作。都懂...
var arr=['張', '李', '陳', '黃']; arr[0]='xx';?
取成員
單個,一般獲取
根據(jù)索引獲取
var arr=['張', '李', '陳', '黃']; console.log(arr[0]); console.log(arr['0']);// 根據(jù)以前的筆記說firefox這樣不行?反正現(xiàn)在是行了...單個,帶刪除 的獲取
取一個便少一個。將更改 原數(shù)組
?
取第一個
arr.shift();?
取最后一個
arr.pop();?
取指定
使用splice實現(xiàn)
var arr=['張', '李', '陳', '黃']; arr.splice(2, 1);// '陳'。取到了第3個成員 arr;// ['張', '李', '黃']?
多個,帶刪除splice
取多個指定成員,取多少原數(shù)組便會減多少
Array.splice(開始索引,數(shù)量)
返回一個新數(shù)組,裝載取到的成員
?
splice 增刪詳解
?
參考網(wǎng)址:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
?
語法
array.splice(start, deleteCount[, item1[, item2[, ...]]])?
?
參數(shù):
?start 必須。起始索引,負(fù)數(shù)表示從尾部開始起始
?deleteCount 必須(實測可以不帶)。刪除的個數(shù)(含第 start 位)
? 0或負(fù)數(shù)都表示不刪除,一般用0
? 超出情況將刪除index之后的所有成員
? 技術(shù)文檔都說這個是必須,實測不帶也可以,不帶將刪除start(包含start)之后的所有
?itemN 可選,要增加的成員。將從 start 位置處增加。將把start位置以及后面的元素往后擠
?
返回值:
被刪掉的成員組成的新數(shù)組
沒有被刪返回空數(shù)組
?
將更改原始數(shù)組:
deleteCount?刪除、itemN?增加 將應(yīng)用到原數(shù)組中。而被刪除的成員將拼成一個新數(shù)組被返回
?
兼容:
包括ie6的所有
?
關(guān)于clone:
splice不能實現(xiàn)clone,arr.concat、arr.slice可以實現(xiàn)
?
?
slice 復(fù)制數(shù)組
?
可指定位置進(jìn)行復(fù)制
?
語法
arr.slice(begin[, end])
?
?
參數(shù)
begin
開始索引,從0開始
可以是負(fù)數(shù),負(fù)數(shù)情況 相當(dāng)于 length + begin,相減后結(jié)果如果還是負(fù)數(shù)將視0為起始
包含,新數(shù)組將包含此位置的值
經(jīng)測試此參數(shù)也是可選的,省略情況相當(dāng)于arr.slice(0)
?
end
結(jié)束索引,從0開始
省略此參數(shù)將將一直取到原數(shù)組末尾
可以是負(fù)數(shù),負(fù)數(shù)情況原理同begin一樣
不包含,新數(shù)組將不包含此位置的值
小于或者等于begin 將 返回空數(shù)組,負(fù)數(shù)情況也如此
?
返回新數(shù)組
?
不更改原數(shù)組
?
完全復(fù)制
不帶參或者 begin 為 0 即可實現(xiàn)完全復(fù)制
?
兼容性
包括 ie6 的所有瀏覽器
?
concat 合并數(shù)組
實現(xiàn) 合并 或者?追加。返回一個新數(shù)組
數(shù)組情況是合并,非數(shù)組是追加。
var arr = ['成員1', '成員2', '成員3'], arr.concat('成員4',['成員5'])// ["成員1", "成員2", "成員3", "成員4", "成員5"]?
語法:
array.concat(value1, value2, ..., valueN)?
參數(shù):
?valueN 可選,不帶參將實現(xiàn)復(fù)制??
?
關(guān)于合并:
就是將數(shù)組的所有子成員追加進(jìn)來,相當(dāng)于如果參數(shù)是數(shù)組,那么你當(dāng)它沒有中括號吧。
合并只限于子級, 如果子成員還是數(shù)組 ,不會再去合并,此數(shù)組將視為成員。
var arr = ['成員1', '成員2', '成員3'],arr2= ['成員4',['成員5']]; var newArr = arr.concat(arr2); console.log(newArr); // ["成員1", "成員2", "成員3", "成員4", ["成員5"]]?
返回值:
合并后的數(shù)組
?
不更改原數(shù)組,也不會更改作為參數(shù)的數(shù)組 var arr = ['成員1', '成員2', '成員3'],arr2= ['成員4','成員5']; var newArr = arr.concat(arr2);console.log(arr); // ["成員1", "成員2", "成員3"] console.log(arr2); // ["成員4", "成員5"] console.log(newArr); // ["成員1", "成員2", "成員3", "成員4", "成員5"]?
可實現(xiàn)clone
不帶參即可
slice也可以實現(xiàn)clone
var arr = ['成員1', '成員2', '成員3']; var newArr = arr.concat();兼容性:包括ie6的所有
?
sort 排序
默認(rèn)排序,將按字符排序
不帶參即可,升序,即小的在前面。
?
將更改原數(shù)組
?
漢字
的話根據(jù) Unicode編碼,并非按照拼音
['陳','張', '黃','李'].sort();//["張", "李", "陳", "黃"]上例中,如果按照拼音,'陳'應(yīng)該在最前才對。而輸出字符對于的Unicode編碼是?5F20 674E 9648 9EC4,這很明顯
推想,估計所有字符,包括字母都是按照編碼來的
?
字符排序探索
逐個字符進(jìn)行對比(如果是數(shù)字,并非根據(jù)數(shù)量)
[100,99].sort()// [100, 99]其實,如果看了下面的自定義排序,上例的結(jié)果感覺應(yīng)該是這么來的。轉(zhuǎn)字符串,再比較
'100'<'99'// true?
自定義排序
下例實現(xiàn)數(shù)字排序。例子為降序。升序 將1 和 -1 調(diào)換即可
([2, 33, 12, 6, 3333]).sort(function (v1, v2) {if (v1 < v2) return 1;if (v1 > v2) return -1;return 0;// 不處理 })?
強(qiáng)調(diào):將更改原數(shù)組
?
有返回值
雖然更改了原數(shù)組,但還是有返回值,返回更改后的原數(shù)組,或者說返回原數(shù)組引用
?
?
reverse 數(shù)組反轉(zhuǎn)
差不多就是將整個數(shù)組倒過來,第一個位置就是 最后一個成員了
arr.reverse();toSource??
返回代表特定數(shù)組的數(shù)組常數(shù),可以用來建立新的數(shù)組?
?
valueOf??
取得數(shù)組值
?
數(shù)組類型判斷
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/cqlql/p/5673039.html
總結(jié)
- 上一篇: 梦到捡猫屎是什么意思
- 下一篇: 调用未绑定的父类方法和使用supper