1. 程式人生 > >帶你學習ES5中新增的方法

帶你學習ES5中新增的方法

1. ES5中新增了一些方法,可以很方便的運算元組或者字串,這些方法主要包括以下幾個方面

  • 陣列方法
  • 字串方法
  • 物件方法

    2. 陣列方法

    迭代遍歷方法:forEach()、map()、filter()、some()、every()
    判斷方法:isArray()

2.1 forEach跟jQuery的each用法類似。語法是:

array.forEach(function(currentValue, index, arr))
  • currentValue: 陣列當前項的值
  • index: 陣列當前項的索引
  • arr: 陣列物件本身
var arr = [1,2,3]
arr.forEach(function(value, index, array){
    console.log('每個陣列元素'+ value)
  console.log('每個陣列元素的索引值'+ index)
  console.log('陣列本身'+ array)
})

執行效果如下圖

2.2 map()

array.map(function(currentValue, index, arr))

map() 方法建立一個新陣列,其結果是該陣列中的每個元素都呼叫一個提供的函式後返回的結果。
注意:map() 方法是直接返回一個新的陣列

  • currentValue: 陣列當前項的值
  • index: 陣列當前項的索引
  • arr: 陣列物件本身
var array1 = [1, 4, 9, 16];
var map1 = array1.map(function(value, index, arr) {
return value * 2
});
console.log(map1) //[2,8,18,32]

2.3 filter()

array.filter(function(currentValue, index, arr))

filter()方法用於篩選建立一個新的陣列,新陣列中的元素是通過檢查指定陣列中符合條件的所有元素,主要用於篩選陣列。
filter()方法是直接返回一個新的陣列

  • currentValue: 陣列當前項的值
  • index: 陣列當前項的索引
  • arr: 陣列物件本身
var arr = [12,66,88]
// 選出大於20的
var newarr = arr.filter(function(value, index){
  return value >=20
})
可以簡寫成var newarr = arr.filter( //[66, 88])
console.log(newArr) //[66, 88]

預覽效果如下圖

2.4 some()

array.some(function(currentValue, index, arr))

some()方法用於檢測陣列中的元素是否滿足指定條件,通俗點查詢陣列中是否有滿足條件的元素
注意: some()方法返回值是布林值,如果查詢到這個元素,就返回true,如果查詢不到則返回false
如果找到第一個滿足條件的元素,則終止迴圈,不在繼續查詢

  • currentValue: 陣列當前項的值
  • index: 陣列當前項的索引
  • arr: 陣列物件本身
var arr=[10,30,4]
var b = arr.some(function(value){
    return value > 20
})
console.log(b) //true

2.5 every()

array.every(function(currentValue, index, arr))

every() 方法測試一個數組內的所有元素是否都能通過某個指定函式的測試。它返回一個布林值。
注意:every() 方法必須每個元素都符合條件才能返回true,若有一個不符合,則返回false。
若收到一個空陣列,此方法在一切情況下都會返回 true。

  • currentValue: 陣列當前項的值
  • index: 陣列當前項的索引
  • arr: 陣列物件本身

    2.6 isArray()

Array.isArray(obj)


Array.isArray() 用於確定傳遞的值是否是一個 Array

  • obj是需要檢測的值。如果是陣列則返回true,否則返回false

區別:

  1. filter 是查詢滿足條件的元素,返回的是一個數組,而且是把所有滿足條件的元素返回回來
  2. some 是查詢滿足條件的元素是否存在,返回的是一個布林值,如果查詢第一個滿足條件的元素,就終止迴圈。如果陣列中查詢唯一個元素,用some方法更為合適,因為它找到這個元素,就不在進行迴圈,效率更高
  3. every是查詢所有的元素是否符合條件,返回的是一個布林值
  4. map是建立一個新陣列,其結果是該陣列中的每個元素都呼叫一個提供的函式後返回的結果

    3. 字串方法

    trim() 方法會從一個字串的兩端刪除空白字元

str.trim()

trim() 方法並不影響原字串本身,它返回的是一個新字串。

4. 物件方法

Object.defineProperty()定義物件中新增屬性或修改原有的屬性

Object.defineProperty(obj, prop, descriptor)
  • obj: 必需。目標物件
  • prop: 必需。 需定義或修改的屬性名字
  • descriptor: 必需。目標屬性所擁有的特性

Object.defineProperty() 第三個引數descriptor說明: 以物件形式{}書寫

  • value:設定屬性的值,預設為undefined
  • writable:值是否可以重寫。true | false 預設為false
  • enumerable: 目標屬性是否可以被列舉。true | false 預設為false
  • configurable: 目標屬性是否可以被刪除或是否可以再次修改特性true | false 預設為false
var obj = {
id: 1,
pname: '小米',
price: 1999
}
//以前的物件新增和修改屬性的方式
obj.num = 1000
obj.pirce = 99
console.log(obj)

//Object.deefineProperty()定義新屬性或者修改原有的屬性
Object.defineProperty(obj, 'num',{
    value: 1000,
})
Object.defineProperty(obj, 'pricee',{
    value: 9.9,
})
Object.defineProperty(obj, 'id',{
  //如果值為false,則不允許修改
    writable: false,
})
Object.defineProperty(obj, 'address',{
    value: '中國鄭州市',
  //如果值為false,則不允許遍歷,列舉
  enumerable: false
})
console.log(obj)
console.log(Object.keys(obj))

總結

本篇文章主要分享了ES5新增的一些方法,有陣列方法、字串方法、物件方法等等,主要分享了哥方法的用法,特點等等。如果想了解更多,請掃描二維碼:

相關推薦

學習ES5新增方法

1. ES5中新增了一些方法,可以很方便的運算元組或者字串,這些方法主要包括以下幾個方面 陣列方法 字串方法 物件方法 2. 陣列方法 迭代遍歷方法:forEach()、map()、filter()、some()、every()判斷方法:isArray() 2.1 forEach跟jQuery的ea

ES5新增的Array方法詳細說明

一、前言-索引 ES5中新增的不少東西,瞭解之對我們寫JavaScript會有不少幫助,比如陣列這塊,我們可能就不需要去有板有眼地for迴圈了。 ES5中新增了寫陣列方法,如下: map (js v1.6)some (js v1.6)every (js v1.6)

5分鐘學習瀏覽器8大數據存儲技術

clas 上大 獲取 message logs 發送請求 我們 不兼容 class 瀏覽器的緩存機制 HTTP文件緩存、LocalStorage、 sessionStorage、cookie、indexDB、webSQL 、CatheStorage、Applicatio

學習多線程編程

線程 多線程 進程 Linux 線程概念 定義 線程就是進程內部的執行流,一個進程至少有一個線程,線程擁有自己的私有資源同時也會和進程共享資源。 線程獨有的資源 線程描述符 寄存器 線程棧 errno 信號掩碼 實時調度策略 線程和進程共享的資源 全局變量 堆 代碼段 文件描述符表 進程

螞蟻技術專家:一篇文章學習分布式事務

自己實現 鎖定 ons 快速 事務管理器 獲取 currency 定性 能力 小螞蟻說: 分布式事務是企業集成中的一個技術難點,也是每一個分布式系統架構中都會涉及到的一個東西,特別是在這幾年越來越火的微服務架構中,幾乎可以說是無法避免,本文就圍繞分布式事務各方面與大家進行介

循序漸進學習時間複雜度和空間複雜度。

本文字數:4894 字 閱讀本文大概需要:13 分鐘   寫在之前  我們都知道,對於同一個問題來說,可以有多種解決問題的演算法。儘管演算法不是唯一的,但是對於問題本身來說相對好的演算法還是存在的,這裡可能有人會問區分好壞的標準是什

循序漸進學習時間復雜度和空間復雜度。

準備 日常 數據結構 media 輸入數據 有時 學習過程 幫助 和平 本文字數:4894 字 閱讀本文大概需要:13 分鐘 寫在之前 我們都知道,對於同一個問題來說,可以有多種解決問題的算法。盡管算法不是唯一的,但是對於問題本身來說相對好的算法還是存在的,這

ES6。類與繼承的方法,以及與ES5方法的對比

// 在ES5中,通常使用建構函式方法去實現類與繼承   1 // 建立父類 2 function Father(name, age){ 3 this.name = name; 4 this.age = age;

#圖文詳解:從實際和理論出發,瞭解Java的多執行緒

這裡並沒有講什麼新東西,只是把多執行緒一些知識來個總結。大家懂得可以複習複習,還有些童鞋對多執行緒朦朧的可以拿這個做為入門~ 舉個栗子說明啥是多執行緒:玩遊戲,前面一堆怪,每個怪都是一個執行緒,你射了一槍,子彈飛出去了,這顆子彈也是一個執行緒。你開啟你的程序管理,看到你遊戲的後臺程序,這就是程序

【javascript實現】幾道題目學習二叉搜尋樹

二叉樹大家都知道,二叉搜尋樹滿足以下特徵: 節點的左子樹只包含小於當前節點的數 節點的右子樹只包含大於當前節點的數 所有左子樹和右子樹自身必須也是二叉搜尋樹 二叉搜尋樹也叫二叉排序樹,中序遍歷二叉搜尋樹的結果就是一次遞增的遍歷。 一、二叉搜尋樹的建立 相關題目:lee

在js新增方法

先定義,儘量定義在前面,否則頁面報錯,會提示undefined。 /** * 計算字串長度(一個漢字等同於一個英文字母) */ String.prototype.realLength1 = function() { return this.replace(/[^\x00-\xff]/g

Spring Security開發安全的REST服務 大神學習後端安全開發實戰分享

===============課程目錄=============== ├1-1+導學.mp4 ├2-1 開發環境安裝.mp4 ├2-2 程式碼結構介紹.mp4 ├2-3 Hello Spring Security.mp4 ├3-1+Restful簡介.mp4 ├3-10 使用多執行緒提高REST服務

認識Linux的通配符

查看 inux process water 圖片 顯示 技術 pro 開頭 通配符是一種特殊語句,用來模糊搜索文件,當查找文件夾時,可以使用它來代替一個或多個真正的字符,它使得文件管理更加快速,便捷,大大的提升了工作效率。 常用的通配符有 * 、? 、[] 等(可通過m

內建物件Array的原型物件新增方法

// //倒序字串的方法String.prototype.myReverse=function () { for(var i=this.length-1;i>=0;i--){ console.log(this[i]); }};var str="1234567";str.myReverse(

Ted 學習資料結構 之 二叉堆(Binary Heap)

二叉堆(Binary Heap) (1)structure property Heap(堆)是一個除了底層節點外的完全填滿的二叉樹,底層可以不完全,左到右填充節點。(a heap is a binar

一文理解JavaLock的實現原理

當多個執行緒需要訪問某個公共資源的時候,我們知道需要通過加鎖來保證資源的訪問不會出問題。java提供了兩種方式來加鎖,一種是關鍵字:synchronized,一種是concurrent包下的lock鎖。synchronized是java底層支援的,而concurrent包

五分鐘看完CSS3新增的偽類選擇器,讓體驗使用CSS3的快感。

CSS選擇器用於選擇你想要的元素的樣式的模式。偽類元素主要用於對已有選擇器做進一步的限制,對已有選擇器能匹配的元素做進一步的過濾。 偽類選擇器 1.UI元素狀態偽類選擇器 UI元素狀態偽類選擇器主要用於根據UI元素的狀態進行篩選,UI元素狀態偽類選擇器有如下幾個。

Swift-->R.swift體驗AndroidR類的便利

安裝需要2點: 1:需要執行一段指令碼 "$PODS_ROOT/R.swift/rswift" "$SRCROOT" 2:指令碼生成的檔案R.generated.swift,需要複製到專案中, 這樣才能愉快的使用R.swift 使

從底層理解Python的一些內部機制

下面博文將帶你建立一個位元組碼級別的追蹤API以追蹤Python的一些內部機制,比如類似YIELDVALUE、YIELDFROM操作碼的實現,推式構造列表(List Comprehensions)、生成器表示式(generator expressions)以及其他一些有趣Python的編譯。 以下為譯文

android客戶端學習-scrollview新增webview顯示空白的問題

在scrollview中新增webview,牽扯到高度計算的問題,這個試了很多方法之後,選者了下面這種: 1.xml檔案中 <ScrollView android:layout_width="match_parent" android:layout_height="