国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Javascript處理數(shù)組基礎(chǔ)知識(shí)(含es6新語法)

Panda / 3278人閱讀

摘要:對數(shù)組中每一項(xiàng)進(jìn)行給定函數(shù)返回該函數(shù)會(huì)返回的項(xiàng)組成新的數(shù)組??蛇x,規(guī)定回調(diào)函數(shù)所指向的對象。新增新操作數(shù)組的方法傳入一個(gè)回調(diào)函數(shù),找到數(shù)組中符合當(dāng)前搜索規(guī)則的第一個(gè)元素,返回它,并且終止搜索。必需,回調(diào)函數(shù),它制定了對數(shù)組元素的檢索規(guī)則。

迭代方法 1.every()

對數(shù)組中每一項(xiàng)進(jìn)行給定函數(shù),如果每一項(xiàng)都返回true,則返回true。

every(callback(element,index,array), thisArg)

callback:必需,對數(shù)組每一項(xiàng)所要執(zhí)行的函數(shù)。

thisArg:可選,規(guī)定callback回調(diào)函數(shù)this所指向的對象。

var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.every(function(item,index,array){
    return item>2;
});
console.log(everyResult); //false
var numbers = [1,2,3,4,5,4,3,2,1];
var obj = {num:2}
var everyResult = numbers.every(function(item,index,array){
    return item>this.num;
},obj);
console.log(everyResult);  //false

特別說明:第一個(gè)參數(shù)是回調(diào)函數(shù),第二個(gè)參數(shù)是一個(gè)對象,它可以重置回調(diào)函數(shù)中this的指向。那么,上述代碼中回調(diào)函數(shù)的this就指向obj,于是this.num值等于2。

2.some()

對數(shù)組中每一項(xiàng)進(jìn)行給定函數(shù),如果任意一項(xiàng)都返回true,則返回true

some(callback(element,index,array), thisArg)

callback:必需,對數(shù)組每一項(xiàng)所要執(zhí)行的函數(shù)。

thisArg:可選,規(guī)定callback回調(diào)函數(shù)this所指向的對象。

var numbers = [1,2,3,4,5,4,3,2,1];
var someResult = numbers.some(function(item,index,array){
    return item>2;
});
console.log(someResult);   //true

var numbers = [1,2,3,4,5,4,3,2,1];
var obj = {num:2}
var someResult = numbers.some(function(item,index,array){
    return item>this.num;
},obj);
console.log(someResult);  //true
3.filter()

對數(shù)組中每一項(xiàng)進(jìn)行給定函數(shù),返回該函數(shù)會(huì)返回true的項(xiàng)組成新的數(shù)組。

filter(callback(element,index,array), thisArg)

callback:必需,對數(shù)組每一項(xiàng)所要執(zhí)行的函數(shù)。

thisArg:可選,規(guī)定callback回調(diào)函數(shù)this所指向的對象。

var numbers = [1,2,3,4,5,4,3,2,1];
var filterResult = numbers.filter(function(item,index,array){
    return item>2;
});
console.log(filterResult);   //  [3,4,5,4,3]
var numbers = [1,2,3,4,5,4,3,2,1];
var obj = {num:2}
var filterResult = numbers.filter(function(item,index,array){
    return item>this.num;
},obj);
console.log(filterResult);   //  [3,4,5,4,3]
4.map()

對數(shù)組中每一項(xiàng)進(jìn)行給定函數(shù),返回每次函數(shù)調(diào)用的結(jié)果組成的新數(shù)組。

map(callback(element,index,array), thisArg)

callback:必需,對數(shù)組每一項(xiàng)所要執(zhí)行的函數(shù)。

thisArg:可選,規(guī)定callback回調(diào)函數(shù)this所指向的對象。

var numbers = [1,2,3,4,5,4,3,2,1];
var mapResult = numbers.map(function(item,index,array){
    return item*2;
});
alert(mapResult);   //  [2, 4, 6, 8, 10, 8, 6, 4, 2]
var numbers = [1,2,3,4,5,4,3,2,1];
var obj = {num:2}
var mapResult = numbers.map(function(item,index,array){
    return item*this.num;
},obj);
alert(mapResult);   //  [2, 4, 6, 8, 10, 8, 6, 4, 2]
5.forEach()

對數(shù)組中每一項(xiàng)進(jìn)行給定函數(shù),沒有返回值,和for循環(huán)類似。

forEach(callback(element,index,array), thisArg)

callback:必需,對數(shù)組每一項(xiàng)所要執(zhí)行的函數(shù)。

thisArg:可選,規(guī)定callback回調(diào)函數(shù)this所指向的對象。

var numbers = [1,2,3,4,5,4,3,2,1];
numbers.forEach(function(item,index,array){
  console.log(item*2)
});
//2, 4, 6, 8, 10, 8, 6, 4, 2

console.log(numbers) //1,2,3,4,5,4,3,2,1
var numbers = [1,2,3,4,5,4,3,2,1];
var obj = {num:2}
numbers.forEach(function(item,index,array){
  console.log(item*this.num)
},obj);
//2, 4, 6, 8, 10, 8, 6, 4, 2
歸并方法

ES5新增了兩個(gè)歸并數(shù)組的方法:reduce(callback(prev,cur,index,array))和reduceRight(callback(prev,cur,index,array))。這兩個(gè)方法迭代數(shù)組所有項(xiàng),然后構(gòu)建一個(gè)最終返回的值。reduce從左到右,reduceRight從右到左。

prev:前一個(gè)值

cur:當(dāng)前值

index:下標(biāo)

array:數(shù)組對象

var numbers = [1,2,3,4,5];
var sum = numbers.reduce(function(prev,cur,index,array){
    return prev + cur;
});
console.log(sum); //15

這個(gè)函數(shù)返回的任何值都會(huì)作為第一個(gè)參數(shù)自動(dòng)傳給下一項(xiàng)。第一次迭代發(fā)生在第二項(xiàng)上,因此第一個(gè)參數(shù)是數(shù)組的第一項(xiàng),第二個(gè)參數(shù)是數(shù)組的第二項(xiàng)。

檢測數(shù)組 1.instanceof

ES3的方法

var numbers = [1,2,3];
if(numbers instanceof Array){
    //對數(shù)組進(jìn)行某些操作
}
2.Array.isArray

ES5的方法

var numbers = [1,2,3];
if(Array.isArray(numbers)){
    //對數(shù)組進(jìn)行某些操作
}
數(shù)組轉(zhuǎn)化成字符串 1.toLocaleString() toString()
var numbers = [1,2,3];
console.log(numbers.toLocaleString())  //1,2,3
console.log(numbers.toString())//1,2,3
2.join()

將數(shù)組轉(zhuǎn)換為字符串,且用分隔符分割

var numbers = [1,2,3];
alert(numbers.join("|"));  // 1|2|3
棧方法

棧方法是指Last-In-First-Out后進(jìn)先出

push() 從數(shù)組末尾添加
pop()  從數(shù)組末尾移除
隊(duì)列方法

隊(duì)列方法是First-In-First-Out先進(jìn)先出

shift()    從數(shù)組前端移除
unshift()  從數(shù)組前端添加
重排序方法 1.reverse()

反轉(zhuǎn)數(shù)組

var numbers = [1,2,3];
console.log(numbers.reverse())  //3,2,1
2.sort()
var numbers = [0,1,5,10,15];
numbers.sort(function(a,b){
    return b-a;
});
console.log(numbers);  //[15, 10, 5, 1, 0]
操作方法 1.concat()

用于復(fù)制或者從尾部添加,創(chuàng)建新數(shù)組。

concat(n1,n2,...,nN)

n1,n2,...,nN:都可選,既可以是數(shù)組,也可以是單個(gè)字符。

var numbers = [1,2,3];
var n1 = values.concat();  //復(fù)制
var n2 = values.concat(4);  //尾部添加
var n3 = n1.concat(n2,10,11); //尾部添加

console.log(numbers);  //[1,2,3]
console.log(n1);      //[1,2,3]
console.log(n2);      //[1,2,3,4]
console.log(n3);      //[1, 2, 3, 1, 2, 3, 4,10,11]
2.slice()

用于復(fù)制或截取數(shù)組,創(chuàng)建新數(shù)組。

slice(start,end)

strat:可選,數(shù)組其實(shí)位置,截取的時(shí)候包括其實(shí)位置

end:可選,結(jié)束位置,截取的時(shí)候不包括結(jié)束位置

var numbers = [1,2,3];
var n1 = numbers.slice(); //復(fù)制
var n2 = numbers.slice(1); //截取
var n3 = numbers.slice(1,3); //截取

console.log(numbers);  //[1,2,3]
console.log(n1);      //[1,2,3]
console.log(n2);      //[2,3]
console.log(n3);      //[2,3]
3.splice()

用于刪除、插入、替換,號(hào)稱最強(qiáng)大的數(shù)組方法

刪除:可以刪除任意數(shù)量的項(xiàng),需要兩個(gè)參數(shù),要?jiǎng)h除的第一項(xiàng)的位置和要?jiǎng)h除的項(xiàng)數(shù)

splice(start,num)

var values = [1,2,3,4,5,6];
var v = values.splice(0,2);
console.log(values);  //[3,4,5,6]
console.log(v);       //[1,2]

插入和替換:至少三個(gè)參數(shù),第一個(gè)是起始位置,第二個(gè)是要?jiǎng)h除的項(xiàng)數(shù),第三個(gè)及以后是要插入或替換的值。

splice(start,num,n1,n2,...,nN)

//插入demo
var values = [1,2,3,4,5,6];
var v1 = values.splice(1,0,1,1,1);
console.log(values);  //[1,1,1,1,2,3,4,5,6]
console.log(v1);      //[]

//替換demo
var values = [1,2,3,4,5,6];
var v1 = values.splice(1,2,1,1,1);
console.log(values);  //[1,1,1,1,4,5,6]
console.log(v1);       //[2,3]
位置方法
indexOf(value,start)
lastIndexOf(value,start)

都接受兩個(gè)參數(shù):查找的值、查找起始位置。不存在,返回 -1 ;存在,返回位置。
indexOf 是從前往后查找, lastIndexOf 是從后往前查找。

var numbers = [1,2,3,4,5,6,7,8,9,5,3];
console.log(numbers.indexOf(5))  //4
console.log(numbers.lastIndexOf(5))  //9
ES6新增新操作數(shù)組的方法 1.find()

傳入一個(gè)回調(diào)函數(shù),找到數(shù)組中符合當(dāng)前搜索規(guī)則的第一個(gè)元素,返回它,并且終止搜索。

find(callback(element,index,array), thisArg)

callback:必需,回調(diào)函數(shù),它制定了對數(shù)組元素的檢索規(guī)則。

thisArg:可選,用來規(guī)定回調(diào)函數(shù)中this所指向的對象。

let arr = [2,3,4,5,6,7,8,9,10];
let elem=arr.find(function (ele) {
  if (ele > 4) {
    return true
  }
})
console.log(elem); //5
let arr = [2,3,4,5,6,7,8,9,10];
let obj = {num: 4};
let elem=arr.find(function (ele) {
  if (ele > this.num) {
    return true
  }
},obj)
console.log(elem); //5
2.findIndex()

傳入一個(gè)回調(diào)函數(shù),找到數(shù)組中符合當(dāng)前搜索規(guī)則的第一個(gè)元素,返回它的下標(biāo),終止搜索。

findIndex(callback(element,index,array), thisArg)

callback:必需,回調(diào)函數(shù),它制定了對數(shù)組元素的檢索規(guī)則。

thisArg:可選,用來規(guī)定回調(diào)函數(shù)中this所指向的對象。

let arr = [2,3,4,5,6,7,8,9,10];
let elem=arr.findIndex(function (ele) {
  if (ele > 4) {
    return true
  }
})
console.log(elem);  //3
let arr = [2,3,4,5,6,7,8,9,10];
let obj = {num: 4};
let elem=arr.findIndex(function (ele) {
  if (ele > this.num) {
    return true
  }
},obj)
console.log(elem);  //3
3.fill()

用新元素替換掉數(shù)組內(nèi)的元素,可以指定替換下標(biāo)范圍。

fill(value,start,end)

value:必需,用來進(jìn)行填充的值。

start:可選,規(guī)定填充開始位置,默認(rèn)從索引0處開始。

end:可選,規(guī)定填充結(jié)束位置,默認(rèn)填充到數(shù)組結(jié)尾。

const arr = ["a", "b", "c", "d"]
console.log(arr.fill("ss", 1, 3))  //?["a", "ss", "ss", "d"]

const arr2 = ["a", "b", "c", "d"]
console.log(arr.fill("ss"))  //?["ss", "ss", "ss", "ss"]
4.includes()

判斷數(shù)組中是否存在該元素,可以替換 ES5 時(shí)代的 indexOf 判斷方式。

includes(value,start)

value:必需,要檢測的元素。

start:可選,規(guī)定填充開始位置,默認(rèn)從索引0處開始。

let arr = ["a", "b","c", "d", NaN]
arr.includes("a") //true
arr.includes(NaN) //true
arr.indexOf(NaN) //-1
5.Array.from()

方法可以將指定的參數(shù)轉(zhuǎn)換為真正的數(shù)組。當(dāng)然并不是任意參數(shù)都是可以被轉(zhuǎn)換為數(shù)組,可以轉(zhuǎn)換的參數(shù)如下:類數(shù)組對象具有遍歷器接口的對象。

Array.from(arrayLike, mapFn, thisArg)

arrayLike:必需,將要被轉(zhuǎn)換為真正數(shù)組的類數(shù)組或者具有遍歷器接口的對象。

mapFn:可選,對參數(shù)arrayLike中的數(shù)據(jù)進(jìn)行處理并返回,作為新數(shù)組的元素。

thisArg:可選,規(guī)定mapFn的調(diào)用對象,那么mapFn中的this將會(huì)指向此調(diào)用對象。

let obj = {
  "0": "螞蟻部落",
  "1": "www.softwhy.com",
  "2": 6,
  "3":"ES2015",
  length:4
};
console.log(Array.from(obj)); //?["螞蟻部落", "www.softwhy.com", 6, "ES2015"]

obj = {
  "a": "螞蟻部落",
  "b": "www.softwhy.com",
  "c": 6,
  "d":"ES2015",
  length:4
};
console.log(Array.from(obj)); //[undefined, undefined, undefined, undefined]

obj = {
  length:3
};
console.log(Array.from(obj)); //[undefined, undefined, undefined]

上述代碼將類數(shù)組對象轉(zhuǎn)換為真正的數(shù)組,什么是類數(shù)組對象:很多材料上對類數(shù)組的描述比較嚴(yán)苛,其實(shí)很簡單,只要一個(gè)對象具有length屬性就是類數(shù)組。當(dāng)然一個(gè)類數(shù)組對象,如果屬性恰好類似于數(shù)組遞增式索引,那就更好了,比如上面代碼中的對象。上面對象只有一個(gè)length屬性,他也是一個(gè)類數(shù)組對象,只不過生成的數(shù)組元素都是undefined。

let str = "螞蟻部落";
console.log(Array.from(str)); //?["螞", "蟻", "部", "落"]

因?yàn)樽址?strong>具有遍歷器接口,那么字符串也可以生成數(shù)組,數(shù)組的每一個(gè)元素,就是構(gòu)成字符串的字符。

let obj = {
  "0": 1,
  "1": 2,
  "2": 3,
  "3": 4,
  length:4
};
let thisObj = {
  num:2
}
console.log(Array.from(obj, function (elem, index) {
  return elem * this.num
}, thisObj)); //[2, 4, 6, 8]

擴(kuò)展:展開運(yùn)算符生成數(shù)組

let str="螞蟻部落";
console.log([...str]);  //["螞", "蟻", "部", "落"]
6.Array.of()
Array.of(element0,element1,...,elementN)

此方法可以接受任意類型的參數(shù),參數(shù)之間用逗號(hào)分隔,并且能夠?qū)?shù)轉(zhuǎn)換為數(shù)組。

console.log(Array.of(2)); //[2]
console.log(Array.of(2,3,4)); //[2,3,4]

擴(kuò)展:Array()與Array.of()方法區(qū)別

console.log(Array(2)) // [undefined, undefined]
console.log(Array.of(2)) // [2]

console.log(Array(2,3,4)) // [2,3,4]
console.log(Array.of(2,3,4)) // [2,3,4]

這個(gè)方法的主要目的,是彌補(bǔ)數(shù)組構(gòu)造函數(shù) Array() 的不足。

7.entries()

返回迭代器:返回一個(gè)遍歷器對象【鍵值對】

//數(shù)組
const arr = ["a", "b", "c"];
for(let v of arr.entries()) {
  console.log(v)
}
// [0, "a"] [1, "b"] [2, "c"]
for(let [key, value] of arr.entries()) {
  console.log(key+"--"+value)
}
//0--a 1--b 2--c

//Set
const arr = new Set(["a", "b", "c"]);
for(let v of arr.entries()) {
  console.log(v)
}
// ["a", "a"] ["b", "b"] ["c", "c"]

//Map
const arr = new Map();
arr.set("a", "a");
arr.set("b", "b");
for(let v of arr.entries()) {
  console.log(v)
}
// ["a", "a"] ["b", "b"]
8.keys()

返回迭代器:返回鍵值對的key

//數(shù)組
const arr = ["a", "b", "c"];
for(let v of arr.keys()) {
  console.log(v)
}
// 0 1 2

//Set
const arr = new Set(["a", "b", "c"]);
for(let v of arr.keys()) {
  console.log(v)
}
// "a" "b" "c"

//Map
const arr = new Map();
arr.set("a", "a");
arr.set("b", "b");
for(let v of arr.keys()) {
  console.log(v)
}
// "a" "b"
9.values()

返回迭代器:返回鍵值對的value

//數(shù)組
const arr = ["a", "b", "c"];
for(let v of arr.values()) {
  console.log(v)
}
//"a" "b" "c"

//Set
const arr = new Set(["a", "b", "c"]);
for(let v of arr.values()) {
  console.log(v)
}
// "a" "b" "c"

//Map
const arr = new Map();
arr.set("a", "a");
arr.set("b", "b");
for(let v of arr.values()) {
  console.log(v)
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/102674.html

相關(guān)文章

  • JavaScript 語言核心筆記(持續(xù)更

    摘要:在同一個(gè)塊內(nèi),不允許用重復(fù)聲明變量。中為新增了塊級(jí)作用域。自帶遍歷器的對象有數(shù)組字符串類數(shù)組對象對象的對象等和結(jié)構(gòu)對象。返回一個(gè)遍歷器,使遍歷數(shù)組的鍵值對鍵名鍵值。 目錄 1.語法 2.類型、值和變量 3.表達(dá)式和運(yùn)算符 4.語句 5.數(shù)組 6.對象 7.函數(shù) 8.全局屬性和方法 9.詞法作用域、作用域鏈、閉包 10.原型鏈、繼承機(jī)制 11.this的理解 12.ES5新特性 13.E...

    suosuopuo 評論0 收藏0
  • Javascripts數(shù)組原生方法集合

    摘要:如果數(shù)組已經(jīng)為空,則不改變數(shù)組,并返回值。中所有在數(shù)組被修改時(shí)都遵從這個(gè)原則,以下不再重復(fù)方法會(huì)給原數(shù)組中的每個(gè)元素都按順序調(diào)用一次函數(shù)。每次執(zhí)行后的返回值沒有指定返回值則返回組合起來 數(shù)組應(yīng)該是我們在寫程序中應(yīng)用到最多的數(shù)據(jù)結(jié)構(gòu)了,相比于無序的對象,有序的數(shù)組幫我們在處理數(shù)據(jù)時(shí),實(shí)在是幫了太多的忙了。今天剛好看到一篇Array.include的文章,忽然發(fā)現(xiàn)經(jīng)過幾個(gè)ES3,ES5,E...

    awokezhou 評論0 收藏0
  • ES6(中)

    摘要:它用來比較兩個(gè)值是否嚴(yán)格相等,與嚴(yán)格比較運(yùn)算符的行為基本一致。兩個(gè)對象的地址不一樣與嚴(yán)格比較運(yùn)算符的不同之處只有兩個(gè)一是不等于,二是等于自身基本用法方法用于對象的合并,將源對象的所有可枚舉屬性,賦值到目標(biāo)對象。 這是ES6的入門篇教程的筆記,網(wǎng)址:鏈接描述,以下內(nèi)容中粗體+斜體表示大標(biāo)題,粗體是小標(biāo)題,還有一些重點(diǎn);斜體表示對于自身,還需要下功夫?qū)W習(xí)的內(nèi)容。這里面有一些自己的見解,所以...

    dreamGong 評論0 收藏0
  • 這一次,我們換種姿勢學(xué)習(xí) javascript

    摘要:操作符或調(diào)用函數(shù)時(shí)傳入?yún)?shù)的操作都會(huì)導(dǎo)致關(guān)聯(lián)作用域的賦值操作。此外可以使用和來設(shè)置對象及其屬性的不可變性級(jí)別。忽視這一點(diǎn)會(huì)導(dǎo)致許多問題。使用調(diào)用函數(shù)時(shí)會(huì)把新對象的屬性關(guān)聯(lián)到其他對象。 前言 《你不知道的 javascript》是一個(gè)前端學(xué)習(xí)必讀的系列,讓不求甚解的JavaScript開發(fā)者迎難而上,深入語言內(nèi)部,弄清楚JavaScript每一個(gè)零部件的用途。本書介紹了該系列的兩個(gè)主題:...

    zone 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<