concat
concat() 方法用于連接兩個(gè)或多個(gè)數(shù)組导而。該方法不會(huì)改變現(xiàn)有的數(shù)組,而僅僅會(huì)返回被連接數(shù)組的一個(gè)副本。
//把 concat() 中的參數(shù)連接到數(shù)組 a
var a = [1,2,3]
a // [1, 2, 3]
a.concat(4,5) //[1, 2, 3, 4, 5] 返回被連接數(shù)組的一個(gè)副本
a // [1, 2, 3] 該方法不會(huì)改變現(xiàn)有的數(shù)組
------------------------------------------------------
//使用 concat()連接兩個(gè)數(shù)組
var arr1 = ["George","John","Thomas"]
var arr2 = ["James","Adrew","Martin"]
arr1.concat(arr2) // ["George", "John", "Thomas", "James", "Adrew", "Martin"]
//返回被連接數(shù)組的一個(gè)副本
arr1 // ["George", "John", "Thomas"] 不會(huì)改變現(xiàn)有的數(shù)組
---------------------------------------------------------------------------
//如果連接3個(gè)數(shù)組
arr1.concat(arr2,arr3)
constructor
constructor n.構(gòu)造器
返回對(duì)創(chuàng)建此對(duì)象的數(shù)組函數(shù)的引用
按照自己的理解的話,就是指向了是誰(shuí)構(gòu)造了自己。哄孤。
//判斷自己的類型
var test=new Array();
if (test.constructor==Array){
document.write("This is an Array");
}
if (test.constructor==Boolean){
document.write("This is a Boolean");
}
if (test.constructor==Date){
document.write("This is a Date");
}
if (test.constructor==String){
document.write("This is a String");
}
//This is an Array
這樣看起來(lái)好像和instanceof很像啊。疑問(wèn):constructor和instanceof有什么區(qū)別吹截?
--------------------------------------------------------------------------
function employee(name,job,born){
this.name=name;
this.job=job;
this.born=born;
}
var bill=new employee("Bill Gates","Engineer",1985);
bill.constructor //bill的由誰(shuí)構(gòu)造的
//function employee(name, job, born){
// this.name = name;
// this.job = job;
// this.born = born
//;}
copyWithin
copyWithin() 方法淺復(fù)制數(shù)組的一部分到同一數(shù)組中的另一個(gè)位置瘦陈,并返回它,而不修改其大小波俄。會(huì)改變?cè)瓟?shù)組晨逝。
arr.copyWithin(target[, start[, end]])
target //從哪個(gè)地方修改,從0開(kāi)始計(jì)算
start //從哪里開(kāi)始復(fù)制懦铺,從0開(kāi)始計(jì)算
end //從哪里結(jié)束復(fù)制捉貌,從0開(kāi)始計(jì)算,不包括這個(gè)下標(biāo)值
a = [0,1,2,3,4,5]
a.copyWithin(3,0,2) // [0, 1, 2, 0, 1, 5] 從第三個(gè)位置修改0~2(0,1)。
a //[0, 1, 2, 0, 1, 5] 改變?cè)瓟?shù)組
entries
entries() 方法返回一個(gè)新的Array Iterator對(duì)象趁窃,該對(duì)象包含數(shù)組中每個(gè)索引的鍵/值對(duì)牧挣。
Array Iterator是對(duì)象,它的原型(__proto__:Array Iterator)上有一個(gè)next方法醒陆,可用用于遍歷迭代器取得原數(shù)組的[key,value]瀑构。
var a = [1,2,3]
var aa = a.entries()
aa //Array Iterator {} 返回一個(gè)新的Array Iterator對(duì)象
aa.next() //{value: Array(2), done:false, value: (2) [0, 1], __proto__: Object}
aa.next() //{value: Array(2), done:false, value: (2) [1, 2], __proto__: Object}
aa.next() //{value: Array(2), done:false, value: (2) [2, 3], __proto__: Object}
aa.next() //{value: undefined, done: true} 找不到
aa.next() //{value: undefined, done: true} 找不到
aa.next() //{value: undefined, done: true} 找不到
aa.next()返回值
/*{value: Array(2), done: false}
done:false
value:(2) [0, "a"]
__proto__: Object
*/
// iterator.next()返回一個(gè)對(duì)象肘习,對(duì)于有元素的數(shù)組,
// 是next{ value: Array(2), done: false }厕宗;
// next.done 用于指示迭代器是否完成:在每次迭代時(shí)進(jìn)行更新而且都是false茂附,
// 直到迭代器結(jié)束done才是true。
// next.value是一個(gè)["key":"value"]的數(shù)組地熄,是返回的迭代器中的元素值。
every
every() 方法測(cè)試數(shù)組的所有元素是否都通過(guò)了指定函數(shù)的測(cè)試。
arr.every(callback[, thisArg])
// callback 用來(lái)測(cè)試每個(gè)元素的函數(shù)像屋。
// thisArg 執(zhí)行 callback 時(shí)使用的 this 值。
every 方法為數(shù)組中的每個(gè)元素執(zhí)行一次 callback 函數(shù)边篮,直到它找到一個(gè)使 callback 返回 false(表示可轉(zhuǎn)換為布爾值 false 的值)的元素己莺。如果發(fā)現(xiàn)了一個(gè)這樣的元素,every 方法將會(huì)立即返回 false戈轿。否則凌受,callback 為每一個(gè)元素返回 true,every 就會(huì)返回 true思杯。
callback 只會(huì)為那些已經(jīng)被賦值的索引調(diào)用胜蛉。不會(huì)為那些被刪除或從來(lái)沒(méi)被賦值的索引調(diào)用。
callback 被調(diào)用時(shí)傳入三個(gè)參數(shù):元素值色乾,元素的索引誊册,原數(shù)組。
every 遍歷的元素范圍在第一次調(diào)用 callback 之前就已確定了暖璧。在調(diào)用 every 之后添加到數(shù)組中的元素不會(huì)被 callback 訪問(wèn)到案怯。
every 和數(shù)學(xué)中的"所有"類似,當(dāng)所有的元素都符合條件才返回true澎办。另外嘲碱,空數(shù)組也是返回true。
function callback(a){
return(a>=8)
}
var passed1 = [8,9,10,12]
passed1.every(callback) //true
var passed2= [8,9,1,10]
passed2.every(callback) //false
fill
fill() 方法用一個(gè)固定值填充一個(gè)數(shù)組中從起始索引到終止索引內(nèi)的全部元素局蚀。
fill和copyWithin用法很像悍汛,fill是自定義修改數(shù)組,改變?cè)瓟?shù)組至会;copyWithin是復(fù)制數(shù)組元素到指定位置离咐,改變?cè)瓟?shù)組。
arr.fill(value[, start[, end]])
//value 用來(lái)填充數(shù)組元素的值。
//start 起始索引宵蛀,默認(rèn)值為0昆著。
//end 終止索引,默認(rèn)值為 this.length术陶。
[1, 2, 3].fill(4); // [4, 4, 4] 替換值為4
[1, 2, 3].fill(4, 1); // [1, 4, 4] 替換值為4凑懂,位置從1~3(不包括)
[1, 2, 3].fill(4, 1, 2); // [1, 4, 3] 替換值為4,位置從1~2(不包括)
[1, 2, 3].fill(4, 1, 1); // [1, 2, 3] 替換值為4梧宫,位置從1~1(不包括)
[1, 2, 3].fill(4, 3, 3); // [1, 2, 3] 替換值為4接谨,位置從3~3(不包括)
[1, 2, 3].fill(4, -3, -2); // [4, 2, 3] 位置從(3+-3)~(3+-2)=>0~1(不包括)
[1, 2, 3].fill(4, NaN, NaN); // [1, 2, 3] 替換值4,
[1, 2, 3].fill(4, 3, 5); // [1, 2, 3] 替換值為4 從4~5(不包括)
\Array(3).fill(4); // [4, 4, 4] 新數(shù)組,替換值為4
\[].fill.call({ length: 3 }, 4); // {0: 4, 1: 4, 2: 4, length: 3}
\//綁定this塘匣,使用this的length脓豪,把4填充到this數(shù)組里面
\// Objects by reference.
var arr = Array(3).fill({}) // [{}, {}, {}];
arr[0].hi = "hi"; // [{ hi: "hi" }, { hi: "hi" }, { hi: "hi" }]
filter
filter() 方法創(chuàng)建一個(gè)新數(shù)組, 其包含通過(guò)所提供函數(shù)實(shí)現(xiàn)的測(cè)試的所有元素。
find
findIndex
forEach
includes
indexOf
join
keys
lastIndexOf
length
map
pop
push
reduce
reduceRight
reverse
shift
slice
some
sort
splice
toLocaleString
toString
unshift