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

資訊專(zhuān)欄INFORMATION COLUMN

js一些數(shù)組的操作。

codercao / 3129人閱讀

摘要:返回值包含被刪除項(xiàng)目的新數(shù)組,如果有的話。該參數(shù)可指定返回的數(shù)組的最大長(zhǎng)度。返回值一個(gè)字符串?dāng)?shù)組。該數(shù)組是通過(guò)在指定的邊界處將字符串分割成子串創(chuàng)建的。元素是通過(guò)指定的分隔符進(jìn)行分隔的。。也是改變?cè)瓟?shù)組,返回的是刪除的值。

數(shù)組擴(kuò)展運(yùn)算符

含義:
擴(kuò)展運(yùn)算符是三個(gè)點(diǎn)(...);好比rest參數(shù)的逆運(yùn)算,將一個(gè)數(shù)組轉(zhuǎn)為用逗號(hào)分割的參數(shù)序列。

console.log(...[1,2,3]);
//1,2,3
console.log(1,...[2,3,4],5);
//1,2,3,4,5
[...document.querySelectorAll("div")]
//[
,
]

該運(yùn)算符主要用于函數(shù)調(diào)用。

function pushs(array,...items){
  array.push(...items);
  return array;
}
console.log(pushs([1,2],...[4,5,6]));
//[1, 2, 4, 5, 6]

function add(x,y){
    return x+y;
}
const numbers = [4,38];
var b = add(...numbers);
//b=42

擴(kuò)展運(yùn)算符與正常的函數(shù)可以結(jié)合使用,非常靈活。

function f(v,w,x,y,z){}
const args = [0,1];
f(-1,...args,2,...[3]);

擴(kuò)展運(yùn)算符后面還可以放置表達(dá)式

const arr =[
    ...(x>0?["a"]:[]),
    "b",
]

如果擴(kuò)展運(yùn)算符后面是一個(gè)空數(shù)組,則不產(chǎn)生任何效果。

[...[],1]

注意:擴(kuò)展運(yùn)算符如果放在括號(hào)中,JavaScript引擎就會(huì)認(rèn)為是函數(shù)調(diào)用,否則就會(huì)報(bào)錯(cuò)。

(...[1,2]);
console.log((...[1,2]))

上面兩種情況都會(huì)報(bào)錯(cuò),因?yàn)閿U(kuò)展運(yùn)算符所在的括號(hào)不是函數(shù)調(diào)用,而console.log(...[1,2])就不會(huì)報(bào)錯(cuò),因?yàn)檫@時(shí)是函數(shù)的調(diào)用。

替代函數(shù)的apply方法

//ES5的寫(xiě)法
function f(x,y,z){
    //...
}
var args = [0,1,2];
f.apply(null,args);
//ES6的寫(xiě)法
function f(x,y,z){
    //...
}
let args = [0,1,2];
f(...args);

下面是擴(kuò)展運(yùn)算符取代apply方法的一個(gè)實(shí)際的例子,應(yīng)用Math.max方法,簡(jiǎn)化求出一個(gè)數(shù)組最大元素的寫(xiě)法。

// ES5 的寫(xiě)法
Math.max.apply(null, [14, 3, 77])

// ES6 的寫(xiě)法
Math.max(...[14, 3, 77])

// 等同于
Math.max(14, 3, 77);

另一個(gè)例子是通過(guò)push函數(shù),將一個(gè)數(shù)組添加到另一個(gè)數(shù)組的尾部。

//ES5的寫(xiě)法
var arr1 = [0,1,2];
var arr2 = [3,4,5];
Array.prototype.push.apply(arr1,arr2);
//ES6的寫(xiě)法
let arr1 = [0,1,2];
let arr2 = [3,4,5];
arr1.push(...arr2);

下面是另一個(gè)例子。

//ES5
new (Date.bind.apply(Date,[null,2015,1,1]));
//ES6
new Date(...[2015,1,1])

擴(kuò)展運(yùn)算符的應(yīng)用

(1)復(fù)制數(shù)組

const a1 = [1,2];
//寫(xiě)法一
const a2 = [...a1];
//寫(xiě)法二
const [...a2] = a1;
//上面的兩種寫(xiě)法,a2都是a1的克隆,改變互相不影響。

(2)合并數(shù)組

const a1 = [{ foo: 1 }];
const a2 = [{ bar: 2 }];

const a3 = a1.concat(a2);
const a4 = [...a1, ...a2];

a3[0] === a1[0] // true
a4[0] === a1[0] // true
//上面代碼中,a3和a4是用兩種不同方法合并而成的新數(shù)組,但是它們的成員都是對(duì)原數(shù)組成員的引用,這就是淺拷貝。如果修改了原數(shù)組的成員,會(huì)同步反映到新數(shù)組。
(3)與解構(gòu)賦值結(jié)合
擴(kuò)展運(yùn)算符可以與解構(gòu)賦值結(jié)合起來(lái),用于生成數(shù)組。

//ES5
a=list[0],rest=list.slice(1);
//ES6
[a,...rest] = list

const [first, ...rest] = [1, 2, 3, 4, 5];
first // 1
rest  // [2, 3, 4, 5]

const [first, ...rest] = [];
first // undefined
rest  // []

const [first, ...rest] = ["foo"];
first  // "foo"
rest   // []

如果將擴(kuò)展運(yùn)算符用于數(shù)組賦值,只能放在參數(shù)的最后一位,否則會(huì)報(bào)錯(cuò)。

const [...butLast, last] = [1, 2, 3, 4, 5];
// 報(bào)錯(cuò)

const [first, ...middle, last] = [1, 2, 3, 4, 5];
// 報(bào)錯(cuò)
如何從數(shù)組中按順序取每5個(gè)元素為一組放到新數(shù)組中,最后不夠5個(gè)也存為一個(gè)數(shù)組
//1.
var SplitArray = function(cont,arr){
    var newArr =[];
    var f;
    for(f=0;f
斐波那契數(shù)列
//1.使用generator函數(shù)和for...of實(shí)現(xiàn)
function*fibonaci(){
    let[prev,curr] = [0,1];
    for(;;){
        yield curr;
        [prev,curr] = [curr,prev+curr];
    }
}
for(let n of fibonaci()){
    if(n>1000)break;
    console.log(n);
}
//2.遞歸方法基礎(chǔ)上進(jìn)行尾調(diào)用優(yōu)化:
function fb(n,res1=1,res2=1){
  if(n<=2){
    return res2;
  }else{
    return fb(n-1,res2,res1+res2);
  }
}
var a = fb(10);

//3.迭代
function fb(n){
  var res1=1;
  var res2=1;
  var sum = res2;
  for(var i=2;i
slice()和splice()區(qū)別

slice(start,end)
start:必需。規(guī)定從何處開(kāi)始選取。如果是負(fù)數(shù),那么它規(guī)定從數(shù)組尾部開(kāi)始算起的位置。也就是說(shuō),-1指最后一個(gè)元素,-2指倒數(shù)第二個(gè)元素,以此類(lèi)推。
end:可選。規(guī)定從何處結(jié)束選取。該參數(shù)是數(shù)組片段結(jié)束處的數(shù)組下標(biāo)。如果沒(méi)有指定該參數(shù),那么切分的數(shù)組包含從start到數(shù)組結(jié)束的所有元素。如果這個(gè)參數(shù)是負(fù)數(shù),那么它規(guī)定的是從數(shù)組尾部開(kāi)始算起的元素。
返回一個(gè)新的數(shù)組,包含從start到end(不包括該元素)的arrayObject中的元素。
注意:該方法并不會(huì)修改數(shù)組,而是返回一個(gè)子數(shù)組。如果想刪除數(shù)組中的一段元素,應(yīng)該使用方法Array.splice().

var a =[1,2,3,4,5,6]
//如果不傳入?yún)?shù)二,那么將從參數(shù)一的索引位置開(kāi)始截取,一直到數(shù)組尾
console.log(a.slice(0,3))//1,2,3
console.log(a.slice(2))//3,4,5,6
//如果兩個(gè)參數(shù)中的任何一個(gè)是負(fù)數(shù),array.length會(huì)和它們相加,試圖讓它們成為非負(fù)數(shù),舉例說(shuō)明:
//當(dāng)只傳入一個(gè)參數(shù),且是負(fù)數(shù)時(shí),length會(huì)與參數(shù)相加,然后再截取
//當(dāng)只傳入一個(gè)參數(shù),是負(fù)數(shù)時(shí),并且參數(shù)的絕對(duì)值大于數(shù)組length時(shí),會(huì)截取整個(gè)數(shù)組
console.log(a.slice(-1))//6
console.log(a.slice(-2))//5,6
console.log(a.slice(-3))//4,5,6
//當(dāng)傳入兩個(gè)參數(shù)一正一負(fù)時(shí),length也會(huì)先于負(fù)數(shù)相加后,再截取
console.log(a.slice(-3,6))//4,5,6
console.log(a.slice(-3,5))//4,5
console.log(a)//1,2,3,4,5,6
//當(dāng)傳入一個(gè)參數(shù),大于length時(shí),將返回一個(gè)空數(shù)組

splice()方法向/從數(shù)組中添加/刪除項(xiàng)目,然后返回被刪除的項(xiàng)目。
該方法會(huì)改變?cè)紨?shù)組。
arrayObject.splice(index,howmany,item1,...,itemX)
index:必需,整數(shù),規(guī)定添加/刪除項(xiàng)目的位置,使用負(fù)數(shù)可從數(shù)組結(jié)尾處規(guī)定位置。
howmany:必需。要?jiǎng)h除的項(xiàng)目數(shù)量。如果設(shè)置為0,則不會(huì)刪除項(xiàng)目。
item1,...,itemX:可選。向數(shù)組添加的新項(xiàng)目。
返回值:包含被刪除項(xiàng)目的新數(shù)組,如果有的話。

var arr = ["a","b","c","d","e"];
// console.log(arr.splice(1,2));//[b,c]
// console.log(arr);//[a,d,e]
// console.log(arr.splice(1,2,"bb","cc"));//[b,c]
// console.log(arr)//[a,bb,cc,d,e]
console.log(arr.splice(1,2,"bb","cc","dd","ee"));//[b,c]
console.log(arr)//["a", "bb", "cc", "dd", "ee", "d", "e"]
split與join

split()方法用于把一個(gè)字符串分割成字符串?dāng)?shù)組。stringObject.split(separator,howmany)。
separator:必需。字符串或正則表達(dá)式,從該參數(shù)指定的地方分割stringObject。
howmany:可選。該參數(shù)可指定返回的數(shù)組的最大長(zhǎng)度。如果設(shè)置了參數(shù),返回的子串不會(huì)多于這個(gè)參數(shù)指定的數(shù)組。如果沒(méi)有設(shè)置該參數(shù),整個(gè)字符串都會(huì)被分割,不考慮它的長(zhǎng)度。
返回值:一個(gè)字符串?dāng)?shù)組。該數(shù)組是通過(guò)在separator指定的邊界處將字符串stringObject分割成子串創(chuàng)建的。返回的數(shù)組中的字串不包括separator自身。
但是,如果separator是包含子表達(dá)式的正則表達(dá)式,那么返回的數(shù)組中包括與這些子表達(dá)式匹配的字串(但不包括與整個(gè)正則表達(dá)式匹配的文本)
join()方法用于把數(shù)組中的所有元素放入一個(gè)字符串。元素是通過(guò)指定的分隔符進(jìn)行分隔的。
arrayObject.join(separator)。
separator:可選。指定要使用的分隔符。如果省略該參數(shù),則使用逗號(hào)作為分隔符。
返回值:返回一個(gè)字符串。該字符串是通過(guò)把a(bǔ)rrayObject的每個(gè)元素轉(zhuǎn)換為字符串,然后把這些字符串鏈接起來(lái),在兩個(gè)元素之間插入separator字符串而生成的。

map遍歷

array.map(callback,[thisObject]);
map方法的作用不難理解,映射,也就是原數(shù)組被映射成對(duì)應(yīng)新數(shù)組。下面這個(gè)例子是數(shù)值項(xiàng)求平方:

var data = [1,2,3,4];
var arrayOfSquares = data.map(function(item){return item*item});
alert(arrayOfSquares)//1,4,9,16

callback需要有return值,如果沒(méi)有,就像下面這樣:

var data = [1,2,3,4];
var arrayOfSquares = data.map(function(){});
arrayOfSquares.forEach(console.log());
concat()

Array.concat(),創(chuàng)建并返回一個(gè)新數(shù)組。

var a = [1,2,3];
var b = a.concat(4,5);
var c = a.concat([4,5]);
console.log(a);//[1,2,3];
console.log(b);//[1,2,3,4,5];
console.log(c);//[1,2,3,4,5];

這個(gè)方法還可以用來(lái)復(fù)制數(shù)組。

var a = [1,2,3];
var b = a.concat();
console.log(a)//[1,2,3];
console.log(b)//[1,2,3];
push()方法與pop()方法

push()方法在數(shù)組的尾部添加一個(gè)或多個(gè)元素,并返回?cái)?shù)組的新長(zhǎng)度。注意的是,改變的是原數(shù)組的值,返回的是新數(shù)組的長(zhǎng)度。
pop()方法刪除數(shù)組的最后一個(gè)元素,并返回它的刪除值。也是改變?cè)瓟?shù)組,返回的是刪除的值。

unshift()方法與shift()方法

unshift()方法類(lèi)似于push()不同的是,它是在數(shù)組的頭部添加,其它都一樣。
shift()方法則類(lèi)比pop()方法。

toString()和toLocaleString()

toString()方法將每個(gè)元素轉(zhuǎn)化為字符串,類(lèi)似于不傳參數(shù)的join()方法。
toLocaleString()方法是toString()的本地化版本。

forEach()方法,從頭至尾遍歷數(shù)組,為每個(gè)元素調(diào)用指定的函數(shù)
var a =[1,2,3,4,5];
var sum = 0;
a.forEach(function(value){
    sum+=value;
})
console.log(sum);//sum = 15;
filter()方法,返回的是調(diào)用數(shù)組的一個(gè)子集
var a = [1,2,3,4,5];
var b = a.filter(function(value){
    return value > 3;
})
console.log(b)//返回[4,5];
注意:如果使用map()方法,返回的是[false,false,false,true,true]
filter()會(huì)跳過(guò)悉數(shù)數(shù)組中缺少的元素,它的返回?cái)?shù)組總是稠密的。所以可以用以下方法來(lái)壓縮稀疏數(shù)組的空缺。
var a = [1,2,,,5];
var b = a.filter(function(value){
    return true;
})
console.log(b)//返回[1,2,5]
every()和some()

every()方法是只有數(shù)組中所有元素都滿(mǎn)足某個(gè)條件才會(huì)返回true;some()方法是只要有滿(mǎn)足條件的值,就返回true。

var a = [1,2,3,4,5];
a.every(function(value){
    return value <10;
})//true
a.every(function (value){
    return value%2 ===0;
})//false
indexOf()和lastIndexOf()

這兩個(gè)方法都是用來(lái)搜索整個(gè)數(shù)組中具有給定值的元素,返回找到的第一個(gè)元素的索引,如果沒(méi)找到,則返回-1.區(qū)別在于indexOf()從頭至尾搜索,而后者則是反向搜索。

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

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

相關(guān)文章

  • JavaScript 實(shí)現(xiàn)數(shù)組更多高階函數(shù)

    摘要:實(shí)現(xiàn)數(shù)組更多的高階函數(shù)吾輩的博客原文場(chǎng)景雖說(shuō)人人平等,但有些人更加平等。若是有一篇適合萌新閱讀的自己實(shí)現(xiàn)數(shù)組更多操作的文章,情況或許會(huì)發(fā)生一些變化。類(lèi)似于的初始值,但它是一個(gè)函數(shù),避免初始值在所有分組中進(jìn)行累加。 JavaScript 實(shí)現(xiàn)數(shù)組更多的高階函數(shù) 吾輩的博客原文: https://blog.rxliuli.com/p/fc... 場(chǎng)景 雖說(shuō)人人平等,但有些人更加平等。 為...

    aervon 評(píng)論0 收藏0
  • Vue.js 實(shí)踐(2):實(shí)現(xiàn)多條件篩選、搜索、排序及分頁(yè)表格功能

    摘要:基礎(chǔ)布局的中主要為部分,分別是用于搜索篩選和分頁(yè)的表單控件用于排序表格的表頭以及用于展示數(shù)據(jù)的。這也是前瞻發(fā)布之后,提出廢棄部分功能后許多人反應(yīng)較為強(qiáng)烈的原因。 與上周的第一篇實(shí)踐教程一樣,在這篇文章中,我將繼續(xù)從一種常見(jiàn)的功能——表格入手,展示Vue.js中的一些優(yōu)雅特性。同時(shí)也將對(duì)filter功能與computed屬性進(jìn)行對(duì)比,說(shuō)明各自的適用場(chǎng)景,也為vue2.0版本中即將刪除的部...

    Profeel 評(píng)論0 收藏0
  • Vue.js 實(shí)踐(2):實(shí)現(xiàn)多條件篩選、搜索、排序及分頁(yè)表格功能

    摘要:基礎(chǔ)布局的中主要為部分,分別是用于搜索篩選和分頁(yè)的表單控件用于排序表格的表頭以及用于展示數(shù)據(jù)的。這也是前瞻發(fā)布之后,提出廢棄部分功能后許多人反應(yīng)較為強(qiáng)烈的原因。 與上周的第一篇實(shí)踐教程一樣,在這篇文章中,我將繼續(xù)從一種常見(jiàn)的功能——表格入手,展示Vue.js中的一些優(yōu)雅特性。同時(shí)也將對(duì)filter功能與computed屬性進(jìn)行對(duì)比,說(shuō)明各自的適用場(chǎng)景,也為vue2.0版本中即將刪除的部...

    ChanceWong 評(píng)論0 收藏0
  • 深入探究immutable.js實(shí)現(xiàn)機(jī)制(一)

    摘要:本文會(huì)集合多方資料以及我自己的一些理解,深入一些探究實(shí)現(xiàn)機(jī)制。位分區(qū)實(shí)際上是數(shù)字分區(qū)的一個(gè)子集,所有以的整數(shù)次冪,,,,為基數(shù)的數(shù)字分區(qū)前綴樹(shù),都可以轉(zhuǎn)為位分區(qū)。其實(shí)舉個(gè)例子最好理解比如數(shù)字的二進(jìn)制形式是,這是一個(gè)位的二進(jìn)制數(shù)。 Immutable.js 采用了持久化數(shù)據(jù)結(jié)構(gòu)和結(jié)構(gòu)共享,保證每一個(gè)對(duì)象都是不可變的,任何添加、修改、刪除等操作都會(huì)生成一個(gè)新的對(duì)象,且通過(guò)結(jié)構(gòu)共享等方式大幅...

    zhangfaliang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

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