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

資訊專欄INFORMATION COLUMN

js的各種遍歷

mj / 1922人閱讀

摘要:小明是中簡單,最直接的一種用法,寫起來較麻煩,循環要執行確定的次數,通常使用循環。

    let arr = [2, 4, 6, 56, 7, 88];
    let obj = {
        name: "小明",
        age: 18,
        hobby: "run,song,game"
    };
    let str="xiaoming"
for

forjs中簡單,最直接的一種用法,寫起來較麻煩,循環要執行確定的次數,通常使用 for 循環。for類循環都可以break,return.

    for (let i = 0; i < arr.length; i++) {

        console.log(i + ":" + arr[i]) //0:2 1:4 2:6 3:56 4:7 5:88
    }
while

很容易死循環

let arr=[1,0,8,7],i=0;
while(i
do while

很容易死循環

let arr=[1,0,8,7],i=0;
do{
    console.log(i+":"+arr[i]);//0:1 1:0 2:8 3:7
    i++
}while(i
for  in

遍歷的key,keystring類型,也會循環原型鏈中的屬性,適用于對象

for(let key in obj){

    console.log(key+":"+obj[key]) //name:小明 age:18 hobby:run,song,game

}
for of

遍歷的value

for(let value of arr){
    console.log(value) //2 4 6 56 7 88
}

for (let [key, value] of arr.entries()) {
    console.log(key+":"+value); //0:2 1:4 2:6 3:56 4:7 5:88
}

for (let [key, value] of Object.entries(obj)) {
    console.log(key+":"+value); //name:小明 age:18 hobby:run,song,game
}
forEach

最節省內存的一種,但是不能break,也不能用return

    arr.forEach((value,key)=>{
        console.log(key + ":" + value) //0:2 1:4 2:6 3:56 4:7 5:88
    })

    Object.keys(obj).forEach((value)=>{
        console.log(value) //"name", "age", "hobby"
    })
    
map

同forEach寫法一樣,循環每一個的時候就相當于在內存中新建了一個數據,比較占內存,與forEach不同的是,它可以return。返回數組。

arr.map((value,index)=>{
    console.log(index+":"+value) //0:2 1:4 2:6 3:56 4:7 5:88
})

Object.values(obj).map((value,key)=>{
    console.log(key+":"+value) //0:小明 1:18 2:run,song,game
})
Object.keys()/values()
console.log(Object.keys(obj)) // (3) ["name", "age", "hobby"]
console.log(Object.values(obj)) // (3) ["小明", 18, "run,song,game"]
Array Array.prototype.reduce()

累加器

語法:arr .reduce(callback [累加器累加的值,當前元素的值,當前元素的索引(可選),])
arr.reduce((acc,value)=>acc+value) //2+4+6+56+7+88=163

arr.reduce((acc,value)=>{
    return acc+value
},5) //5+2+4+6+56+7+88=168,第一個為此時設置的值為index=0開始

//合并數組
[[0, 1], [2, 3], [4, 5]].reduce(
  ( acc, cur ) => acc.concat(cur),
  [] //[0, 1, 2, 3, 4, 5]
);

//統計出現次數
var names = ["Alice", "Bob", "Tiff", "Bruce", "Alice"];
names.reduce(function (allNames, name) { 
  if (name in allNames) {
    allNames[name]++;
  }
  else {
    allNames[name] = 1;
  }
  return allNames;
}, {}); // { "Alice": 2, "Bob": 1, "Tiff": 1, "Bruce": 1 }


//按順序運行promise
function runPromiseInSequense(arr) {
  return arr.reduce((promiseChain, currentPromise) => {
    return promiseChain.then((chainedResult) => {
      return currentPromise(chainedResult)
        .then((res) => res)
    })
  }, Promise.resolve());
}

// promise function 1
function p1() {
  return new Promise((resolve, reject) => {
    resolve(5);
  });
}

// promise function 2
function p2(a) {
  return new Promise((resolve, reject) => {
    resolve(a * 2);
  });
}

// promise function 3
function p3(a) {
  return new Promise((resolve, reject) => {
    resolve(a * 3);
  });
}

const promiseArr = [p1, p2, p3];
runPromiseInSequense(promiseArr)
  .then((res) => {
    console.log(res);   //5+5*2+5*3= 30
  });
Array.prototype.every()

遍歷所有元素,得到一個bool值,要所有條件都相符才會返回true

arr.every(x =>{ x >= 10}); // false
Array.prototype.some()

得到一個布爾值,只要有一個符合條件就可返回true

arr.some(item=>{
    return item>10 //true
})
Array.prototype.filter()

返回一個符合條件的新數組

arr.filter(item=>{
    return item>10 //(2) [56, 88]
})
Array.prototype.find()

返回符合條件的數組的值或數組的對象,找不到返回undefined

arr.find(item=>item==2)//2
Array.indexof(),findIndex()/includs()查找。返回index/-1,boolean
Array.prototype.fill(填充的值,開始索引,結束索引)[1, 2, 3].fill(4, 1, 2); // [1, 4, 3]
Array.sort()

排序

arr.sort((a,b)=>a-b)//升序
arr.sort((a,b)=>b-a)//降序
Object Object.creact(proto)

proto:一個對象,作為創建新對象的原型或null
用指定的原型對象和屬性創建一個新的對象

//來實現類式繼承,單繼承
fuction Shape(){
    this.x=0;
    this.y=0;
}
Shape.prototype.move=function(x,y){
    this.x += x;
    this.y += y
}

function Rectangle(){
    Shape.call(this)
}
Rectangle.prototype=Object.create(Shape.prototype)
var rect=new Rectangle()
rect instanceof Rectangle //true
rect instanceof Shape //true
Object.defineProperty(目標對象,給對象要加的屬性);返回加了屬性之后的對象
Object.getOwnPropertyNames(目標對象);返回帶有該對象屬性的數組
Object.is(value1,value2);判斷2個值是否相同,返回布爾值

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/107116.html

相關文章

  • JS基礎】ES6語法

    摘要:遍歷器對象調用方法后,拋出的異常被函數體捕獲以后,會附帶執行下一條語句。 iterator迭代器 在ES6之前遍歷數組的方法有以下四種: // 第一種 for(var i = 0; i < array.length; i++){ console.log(array[i]) } // 第二種 array.forEach(function(item,index){ cons...

    Maxiye 評論0 收藏0
  • JavaScript二叉樹及各種遍歷算法詳情

      在之前的文章中我們有講過樹的相關知識,例如,樹的概念、深度優先遍歷和廣度優先遍歷。這篇文章講述了一個特殊的樹——二叉樹。 什么是二叉樹  二叉樹是每個節點最多只能有兩個子節點的樹,如下圖所示:  一個二叉樹具有以下幾個特質:  要計算在每層有多少個點,可以依據公式2^(i-1)個(i是樹的第幾層);  如果這顆二叉樹的深度為k,那二叉樹最多有2^k-1個節點;  在一個非空的二叉樹中,若使...

    3403771864 評論0 收藏0
  • task0002(一)- JavaScript數據類型及語言基礎

    摘要:不過讓流行起來的原因應該是是目前所有主流瀏覽器上唯一支持的腳本語言。經過測試,數字字符串布爾日期可以直接賦值,修改不會產生影響。再考慮對象類型為或者的情況。對于結果聲明其類型。判斷對象的類型是還是,結果類型更改。 轉載自我的個人博客 歡迎大家批評指正 1. 第一個頁面交互 這里最需要學習的老師的代碼中,每一部分功能都由函數控制,沒有創建一個全部變量。且最后有一個函數來控制執行代碼...

    elarity 評論0 收藏0
  • JavaScript 堆內存分析新工具 OneHeap

    摘要:關注于運行中的內存信息的展示,用可視化的方式還原了,有助于理解內存管理。背景運行過程中的大部分數據都保存在堆中,所以性能分析另一個比較重要的方面是內存,也就是堆的分析。上周發布了工具,可以用來動態地展示的結果,分析各種函數的調用關系。 OneHeap 關注于運行中的 JavaScript 內存信息的展示,用可視化的方式還原了 HeapGraph,有助于理解 v8 內存管理。 ...

    zilu 評論0 收藏0
  • jsfor in和for each in用法和區別

    摘要:區別一是中發布的。是作為標準的一部分在中發布的,而它不是標準的一部分。這將意味著存在各種瀏覽器的兼容性問題。遍歷對象,由于沒辦法提供理想的遍歷,因而只能選擇其他方法。 區別一: for in是javascript 1.0 中發布的。 for each in是作為E4X標準的一部分在javascript 1.6中發布的,而它不是ECMAScript標準的一部分。 這將意味著存在各種瀏覽器...

    Blackjun 評論0 收藏0

發表評論

0條評論

mj

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<