ES6-12 array/數值拓展、ArrayOf、ArrayFrom

要使用…須有迭代器接口

數組方法

在這里插入圖片描述

構造器上的方法

Array.of()聲明數組

  • 替代new Array()的方式聲明數組
  • new Array()不傳參數返回空數組,只傳1個參數時,代表數組長度,內容用empty填充,傳多個參數,則代表數組內容,容易有歧義
console.log(new Array()) // []
console.log(new Array(1)) // [empty]
console.log(new Array(1, 2, 3)) // [1, 2, 3]
console.log(Array()) // 不寫new 效果相同 []
console.log(Array(1)) // [empty]
console.log(Array.of()) // []
console.log(Array.of(1)) // [1]
console.log(Array.of(1, 2, 3)) // [1, 2, 3]

Array.from() 轉換為真正的數組

  • Array.from() 方法從一個類似數組或可迭代對象創建一個新的,淺拷貝的數組實例

  • 語法 Array.from(arrayLike[, mapFn[, thisArg]])
    mapFn 可選:如果指定了該參數,新數組中的每個元素會執行該回調函數。
    thisArg 可選:可選參數,執行回調函數 mapFn 時 this 對象。

  • 類數組,打印出來和數組沒什么區別,但不是數組

在這里插入圖片描述

let obj = {start: [1, 3, 2, 4],end: [5, 7, 6],[Symbol.iterator]() {let index = 0,arr = [...this.start, ...this.end],len = arr.length;return {next() {if (index < len) {return {value: arr[index++],done: false}} else {return {value: undefined,done: true}}}}}
}
console.log(Array.from(obj)) //  [1, 3, 2, 4, 5, 7, 6]
console.log(Array.from(obj,function (val,idx) {return `第${idx}個:${val}`
}))
// ["第0個:1", "第1個:3", "第2個:2", "第3個:4", "第4個:5", "第5個:7", "第6個:6"]

原型上的方法

ES6新增有:[].fill() copyWithin() keys() / values() / entries() includes() find() / findIndex()

arr.fill() 左閉右開

  • fill() 方法用一個固定值填充一個數組中從起始索引到終止索引內的全部元素。不包括終止索引。[ , )
  • 修改原數組
  • 如果start和end索引相同/或者是非數,則不操作
  • 不寫end/end超出長度,就填充直到結束
[1, 2, 3].fill(4);               // [4, 4, 4]
[1, 2, 3].fill(4, 1);            // [1, 4, 4]
[1, 2, 3].fill(4, 1, 2);         // [1, 4, 3]
[1, 2, 3].fill(4, 1, 1);         // [1, 2, 3]
[1, 2, 3].fill(4, 3, 3);         // [1, 2, 3]
[1, 2, 3].fill(4, -3, -2);       // [4, 2, 3]
[1, 2, 3].fill(4, NaN, NaN);     // [1, 2, 3]
[1, 2, 3].fill(4, 3, 5);         // [1, 2, 3]
Array(3).fill(4);                // [4, 4, 4]
[].fill.call({ length: 3 }, 4);  // {0: 4, 1: 4, 2: 4, length: 3}// Objects by reference.
var arr = Array(3).fill({}) // [{}, {}, {}];
// 需要注意如果fill的參數為引用類型,會導致都執行都一個引用類型
// 如 arr[0] === arr[1] 為true
arr[0].hi = "hi"; // [{ hi: "hi" }, { hi: "hi" }, { hi: "hi" }]

keys() / values() / entries()

  • 返回值是迭代器對象
  • 迭代器對象的原型上有next方法
  • 迭代器對象沒有length屬性,不能用for循環遍歷
const arr = [1, 2, 3]
const itKeys = arr.keys()
const itVals = arr.values()
const itEntries = arr.entries()
console.log(itKeys)
console.log(itVals)
console.log(itEntries)
console.log(itKeys.next())
console.log(itKeys.next())
console.log(itKeys.next())
console.log(itKeys.next())
console.log('剩余運算符展開',[...arr.keys()])console.log(itVals.next())
console.log(itVals.next())
console.log(itVals.next())
console.log(itVals.next())
console.log('剩余運算符展開',[...arr.values()])console.log(itEntries.next())
console.log(itEntries.next())
console.log(itEntries.next())
console.log(itEntries.next())
console.log('剩余運算符展開',[...arr.entries()])

在這里插入圖片描述

在這里插入圖片描述

copyWithin

  • 淺復制數組的一部分到同一數組中的另一個位置,并返回它,不會改變原數組的長度。
  • copyWithin(target,start,end)
  • target從哪里開始被替換
  • start原數組從哪開始
  • end原數組到哪結束
const arr = [1, 2, 3, 4]
console.log(arr.copyWithin(2, 0)) // [1,2,1,2]

在這里插入圖片描述

console.log([].copyWithin.call({ length: 5, 3: 1 }, 0, 3))
// 沒有用undefined進行填充,沒有對沒有的index進行填充

在這里插入圖片描述

console.log([].copyWithin.call({ length: 5, 3: 1, 4: 1}, 0, 3))

在這里插入圖片描述

ES6解決了NaN本身不相等而影響判斷結果的問題

find/findIndex

  • find返回數組中滿足提供的測試函數的第一個元素的值。否則返回 undefined。
  • findIndex返回數組中滿足提供的測試函數的第一個元素的索引。若沒有找到對應元素則返回-1。
  • 接收參數:callback(val,idx,arr),[thisArg]
const arr = [NaN]
console.log(arr.indexOf(NaN)) // -1 找不到,NaN與自身也不相等
console.log(arr.findIndex((val) => Object.is(val, NaN))) // 0 找到
console.log(arr.findIndex((val) => isNaN(val))) // 0 找到

includes

  • 判斷一個數組是否包含一個指定的值,根據情況,如果包含則返回 true,否則返回false。
const arr = [NaN]
console.log(arr.includes(NaN)) // true

數值拓展

  • 二進制binary
  • 八進制Octal
  • 十六進制 hex
  • 新增二進制/八進制表示方法
  • 二進制0b開頭,八進制0O開頭
// 十進制16轉為二進制 
console.log((16).toString(2)) // 10000
// 直接表示這個二進制數
console.log(0b10000) // 16 打印結果是十進制的
// 十進制16轉為八進制 
console.log((16).toString(8)) // 20
// 直接表示這個八進制數
console.log(0O20) // 16 打印結果是十進制的
  • ES5就有的十六進制是0x開頭的
  • 都不區分大小寫
  • parseInt、isNaN等方法在ES5中是定義在全局的,ES6中在Number的構造器上可看到這些方法的定義,也解決了全局方法的一些問題
    在這里插入圖片描述

isNaN 隱式轉換

console.log(isNaN('NaN')) // true,隱式轉換,得到了不符合預期的結果
console.log(Number.isNaN('NaN')) // false

isFinite是有限的

console.log(isFinite(NaN)) // false
console.log(isFinite(Infinity)) // false
console.log(isFinite('42')) // true 隱式轉換
console.log(Number.isFinite('42')) // false

isInteger是整數

console.log(Number.isInteger(24)) // true
console.log(Number.isInteger(24.0)) // true js認為這是整數
console.log(Number.isInteger(24.1)) // false

isSafeInteger 安全整數

  • 安全整數的范圍
console.log(Number.MAX_SAFE_INTEGER === Math.pow(2, 53) - 1) // 2的53次方 true
console.log(Number.MIN_SAFE_INTEGER === -Math.pow(2, 53) + 1) // true

Math對象

  • 內置對象Math沒有prototype
    在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/251003.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/251003.shtml
英文地址,請注明出處:http://en.pswp.cn/news/251003.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

React01

目錄 React-day01 入門知識React介紹官網React開發環境初始化 SPA腳手架初始化項目&#xff08;方便&#xff0c;穩定&#xff09;*通過webpack進行初始化配置鏡像地址開發工具配置元素渲染組件及組件狀態函數定義組件(無狀態)類定義組件(有狀態)*組合組件Props屬性*State狀態*…

算法 --- 反轉數組

幾個注意點: 1.輸出的時候,也要做數字超出處理 2.js中可以使用 str -0 將字符串類型轉換成數字類型 ( 注意不是 0) 3.可以使用 num ‘’ 將數字類型轉換成字符串類型 4.使用str.split(’’) 可以將字符串轉換成數組 5.使用arr.join(’’) 可以將數組轉換成字符串 6.JS中2的31次…

ES6-13 正則方法、修飾符yus、UTF_16編碼方式

修飾符 m multiLine 對于str中含\n的情況g globali ignoreCase 元字符 反斜杠加轉義 元字符含義簡寫\w匹配字母、數字、下劃線。等價于’[A-Za-z0-9_]’。word\W匹配非字母、數字、下劃線。等價于 ‘[^A-Za-z0-9_]’。\s匹配任何空白字符&#xff0c;包括空格、制表符、換頁…

svn文件大小類型限制,提交必須加多少字的說明

#!/bin/shREPOS"$1" TXN"$2" #此處更改大小限制&#xff0c;這里是5M MAX_SIZE5242880 #此處增加限制文件后綴名 FILTER\.(zip|rar|o|obj|tar|gz)$SVNLOOK/usr/bin/svnlookLOGMSG$SVNLOOK log -t "$TXN" "$REPOS" | wc -cif [ "$…

cmd窗口快速定位到具體文件夾方法

在用Python進行機器實戰時&#xff0c;打開cmd窗口后&#xff0c;總是到定位到kNN.py所在文件夾才能Python&#xff08;否則import kNN失敗&#xff09;&#xff0c;每次都要輸入地址非常麻煩 這里介紹一個cmd窗口快速定位到具體文件夾方法&#xff1a; 按住Shift鍵右擊鼠標打開…

算法 --- 羅馬數字轉整數

解體思路: 1.寫一個對象trans用于保存羅馬和數字之間的映射關系 2.重點在于當數值小的出現在數值大的左邊時,會減去該數,出現在右邊時會加上該數,因此需要與后面的進行比較 3.在得到s時,首先給它轉換成字符串,并在末位加一個0 /*** param {string} s* return {number}*/ var r…

正則 - 阮一峰

學習地址 一 正則實例方法 1. test 正則實例.test返回布爾值 var r /x/g; var s _x_x;r.lastIndex // 0 r.test(s) // truer.lastIndex // 2 r.test(s) // truer.lastIndex // 4 r.test(s) // false死循環&#xff0c;因為while循環的每次匹配條件都是一個新的正則表達式…

LintCode 6.合并排序數組 ||

import org.junit.Test;import java.util.Arrays;public class MergeSort {/*** param A: sorted integer array A* param B: sorted integer array B* return: A new sorted integer array* <p>* 合并排序數組 II* 合并兩個排序的整數數組A和B變成一個新的數組。* <p…

算法 --- 有效的括號

解題思路: 1.對括號分別賦值(左括號大于0,右括號小于0),方便后期比較 2.使用棧,對于大于0的字符串入棧,對于小于0的字符串,檢查棧中是否有元素,若沒有返回false,否則拿出棧頂的一個元素,和現在的元素進行比較 /** * param {string} s * return {boolean} */ var isValid func…

ES6-14 Unicode表示法、字符串方法、模板字符串

Unicode表示法 本身能正常識別的&#xff0c;加{}也能識別&#xff0c;花括號內的內容表示碼點 parseInt(0061,16) // 十進制的97&#xff0c;97在ASCII碼中對應a console.log(\u0061) // a console.log(\u{0061}) // a console.log(\u{61}) // a原型上方法 codePointAt(十進…

對 js 高程 Preflighted Reqeusts 的理解

看JS高程遇到 Preflighted Reqeusts不大理解&#xff0c;遂百度下&#xff1a;轉自&#xff1a;http://todoit.me/ajax-preflight/最近在做一個 VUE 的項目的時候, 和后端的小伙伴對接口, 想方便開發, 于是要求后端的小伙伴在所有的接口都加上跨域的許可 (Access-Control-Allow…

算法 --- 刪除數組中重復項

解題思路: 如果輸入的數組長度為1,則返回該數組否則(len>2),使用i記錄當前待插入的位置,j記錄下一個與nums[i]不相等的位置,leng為待返回數組的長度當nums[i] ! nums[j]時,把j位置的值nums[j]放在i1位置.同時i,j /*** param {number[]} nums* return {number}*/ var remov…

如何理解 Linux 中的 load averages

原文&#xff1a;https://mp.weixin.qq.com/s?src11&timestamp1533697106&ver1047&signaturepoqrJFfcNABv4biKKpa4mZdIW7No2Wo1F5sbZL7ggoVS2GqcSqwQQ8hMulAmezT*zL*klB-eE5BeMyNuyjuIH7YgkBAN25i6*ahhEpWyxqx6vPct-Vr7q7AU0YGe-F*l&new1 http://blog.scoutap…

Jsp+Servlet+MYSQL注冊登錄案例(界面難看,ε=(′ο`*)))唉)

注冊登錄界面尤為常見&#xff0c;我的界面尤為難看&#xff0c;勉為其難的寫吧&#xff0c;前端不熟就是這樣。。。 這個案例運用到了: 1.Jsp動態頁面--->動態頁面 2.Servlet邏輯判斷后臺---->實現界面與數據庫/業務的連接&#xff0c;簡而言之&#xff0c;起承轉合。PS…

ES6-15 map與set

Promise、Proxy、Map、Set這些ES6新增的api無法用babel實現語法降級&#xff0c;需要使用到polyfill Set 成員是唯一的&#xff0c;不能重復有iterator接口&#xff0c;可迭代具有iterator接口的所有類型&#xff0c;都能作為new Set()的參數&#xff0c;如類數組、數組 con…

jquery --- DOM操作、表單元素的初始化

1.獲取ul里第2個li節點: var $li_two $("ul li:eq(1)"); // 獲取該節點的內容 var $li_two_txt $li_two.text();2.獲取p元素節點的title屬性: var $para $("p"); var p_title $para.attr("title");3.創建2個li節點,并添加道ul中: var $li…

Jquery中post與get之間的區別詳細介紹

1:GET訪問瀏覽器認為是等冪的 GET訪問瀏覽器認為是等冪的&#xff0c;就是一個相同的URL只有一個結果&#xff0c;相同是指整個URL字符串完全匹配。所以&#xff0c;第二次訪問的時候&#xff0c;如果URL字符串沒變化 瀏覽器是直接拿出了第一次訪問的結果&#xff1b; POST則認…

LeetCode 424. Longest Repeating Character Replacement

原題鏈接在這里&#xff1a;https://leetcode.com/problems/longest-repeating-character-replacement/description/ 題目&#xff1a; Given a string that consists of only uppercase English letters, you can replace any letter in the string with another letter at mo…

ES6-16 WeakMap與WeakSet、proxy與reflect

WeakMap/WeakSet 原型上不存在遍歷方法(沒有部署iterator接口)成員只能是對象垃圾回收機制不考慮對成員對象的應用 WeakSet/WeakMap 中的對象都是弱引用&#xff0c;即垃圾回收機制不考慮 WeakSet 對該對象的引用&#xff0c;也就是說&#xff0c;如果其他對象都不再引用該對象…

jquery--- 屬性和樣式的操作 設置和獲取HTML、文本和值、焦點事件

1.獲取p元素的title屬性: var title $("p").attr("title");2.給p元素加title屬性(值為:栗子)和date屬性(值為:2019/7/15): $("p").attr("title":"栗子", "date":"2019/7/15");3.刪除p中的title屬性:…