摘要:是對象,它的原型上有一個(gè)方法,可用用于遍歷迭代器取得原數(shù)組的。返回一個(gè)對象,對于有元素的數(shù)組,是用于指示迭代器是否完成在每次迭代時(shí)進(jìn)行更新而且都是,直到迭代器結(jié)束才是。是一個(gè)的數(shù)組,是返回的迭代器中的元素值。
1.什么是entry
entries() 方法返回一個(gè)新的Array Iterator對象,該對象包含數(shù)組中每個(gè)索引的鍵/值對。
2.示例
Object.entries()
傳入對象
const obj = { foo: "bar", baz: 42 }; Object.entries(obj) //輸出 [ ["foo", "bar"], ["baz", 42] ]
Array.entries()
傳入數(shù)組
const arr = ["a", "b", "c"]; console.log(Object.entries(arr)); // [[ "0", "a" ], [ "1", "b" ], [ "2", "c" ] ] const arr1 = [{ a: 1 }, 2, 3]; console.log(Object.entries(arr1)); // [["0", { a: 1 }], ["1", "2"], ["2", "3"]] const arr2 = [{ a: 1 }, { b: 2 }, { c: 3 }]; console.log(Object.entries(arr2)); // [["0", { a: 1 }], ["1", { b: 2 }], ["2", { c: 3 }]]
將 Object 轉(zhuǎn)化為 Map
new Map() 構(gòu)造函數(shù)接受一個(gè)可迭代的 entries 。 借助 Object.entries 方法你可以很容易的將 Object 轉(zhuǎn)換為 Map:
const obj2 = { foo: "bar", baz: "abc" }; console.log(Object.entries(obj2)); // [["foo", "bar"], ["baz", "abc"]] const map = new Map(Object.entries(obj2)); console.log(map); // Map {"foo" => "bar", "baz" => "abc"}3. arr.entries()
返回一個(gè)新的 Array 迭代器對象。Array Iterator是對象,它的原型(__proto__:Array Iterator)上有一個(gè)next方法,可用用于遍歷迭代器取得原數(shù)組的[key,value]。
var array1 = ["a", "b", "c"]; var iterator1 = array1.entries(); console.log(iterator1.next().value); // expected output: Array [0, "a"] console.log(iterator1.next().value); // expected output: Array [1, "b"]
Array Iterator
var arr = ["a", "b", "c"]; var iterator = arr.entries(); console.log(iterator); /*Array Iterator {} __proto__:Array Iterator next:? next() Symbol(Symbol.toStringTag):"Array Iterator" __proto__:Object */
iterator.next()
var arr = ["a", "b", "c"]; var iterator = arr.entries(); console.log(iterator.next()); // { value: [ 0, "a" ], done: false } // iterator.next()返回一個(gè)對象,對于有元素的數(shù)組, // 是next{ value: Array(2), done: false }; // next.done 用于指示迭代器是否完成:在每次迭代時(shí)進(jìn)行更新而且都是false, // 直到迭代器結(jié)束done才是true。 // next.value是一個(gè)["key","value"]的數(shù)組,是返回的迭代器中的元素值。
iterator.next方法運(yùn)行
var arr = ["a", "b", "c"]; var iter = arr.entries(); var a = []; // for(var i=0; i< arr.length; i++){ // 實(shí)際使用的是這個(gè) for(var i=0; i< arr.length+1; i++){ // 注意,是length+1,比數(shù)組的長度大 var tem = iter.next(); // 每次迭代時(shí)更新next console.log(tem.done); // 這里可以看到更新后的done都是false if(tem.done !== true){ // 遍歷迭代器結(jié)束done才是true console.log(tem.value); a[i]=tem.value; } } console.log(a); // false // [ 0, "a" ] // false // [ 1, "b" ] // false // [ 2, "c" ] // true // [ [ 0, "a" ], [ 1, "b" ], [ 2, "c" ] ]
二維數(shù)組按行排序
function sortArr(arr) { var goNext = true; var entries = arr.entries(); while (goNext) { var result = entries.next(); if (result.done !== true) { result.value[1].sort((a, b) => a - b); goNext = true; } else { goNext = false; } } return arr; } var arr = [[1,34],[456,2,3,44,234],[4567,1,4,5,6],[34,78,23,1]]; sortArr(arr);
使用for…of 循環(huán)
var arr = ["a", "b", "c"]; var iterator = arr.entries(); // undefined for (let e of iterator) { console.log(e); } // [0, "a"] // [1, "b"] // [2, "c"]
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/105319.html
摘要:返回值給定對象自身可枚舉屬性的鍵值對數(shù)組。描述返回一個(gè)數(shù)組,其元素是與直接在上找到的可枚舉屬性鍵值對相對應(yīng)的數(shù)組。屬性的順序與通過手動循環(huán)對象的屬性值所給出的順序相同。借助方法你可以很容易的將轉(zhuǎn)換為你可以使用下面列出的簡易。 Object.entries() Object.entries()方法返回一個(gè)給定對象自身可枚舉屬性的鍵值對數(shù)組,其排列與使用 for...in 循環(huán)遍歷該對象時(shí)...
摘要:當(dāng)普通對象要轉(zhuǎn)換成時(shí)就很有用,因?yàn)榉祷氐母袷脚c構(gòu)造函數(shù)接受的格式完全相同。使用常規(guī)的構(gòu)造函數(shù)可以將一個(gè)二維鍵值對數(shù)組轉(zhuǎn)換成一個(gè)對象。在和早期標(biāo)準(zhǔn)中,根本沒有指定屬性的順序。此函數(shù)還可以輕松地將純對象屬性映射到對象中。 為了保證的可讀性,本文采用意譯而非直譯。 想閱讀更多優(yōu)質(zhì)文章請猛戳GitHub博客,一年百來篇優(yōu)質(zhì)文章等著你! 自身可枚舉屬性 Object.keys() 方法會返回一個(gè)...
摘要:方法就是的逆操作,作用是將一個(gè)鍵值對數(shù)組轉(zhuǎn)化為一個(gè)對象同樣的該方法也已經(jīng)成為中提案在介紹之前,回顧一下的用法。 Object.fromEntries 方法就是 entries 的逆操作,作用是將一個(gè)鍵值對數(shù)組轉(zhuǎn)化為一個(gè)對象 同樣的該方法也已經(jīng)成為 ES10 中 stage4 提案: showImg(https://segmentfault.com/img/remote/14600000...
摘要:中雙感嘆號的作用一般用于將后面的表達(dá)式強(qiáng)制轉(zhuǎn)化為布爾類型。通過實(shí)現(xiàn)類式繼承繼承對象已經(jīng)原型對象屬性父類父類的方法子類調(diào)用父類的構(gòu)造函數(shù)。 js基礎(chǔ)對象屬性方法 Object.keys() Object.keys()方法會返回一個(gè)由一個(gè)給定對象的自身可枚舉屬性組成的數(shù)組,數(shù)組中屬性名的排列順序和使用 for...in 循環(huán)遍歷改對象時(shí)返回的順序一致(兩者的主要區(qū)別是一個(gè)for-in 循環(huán)...
showImg(https://segmentfault.com/img/remote/1460000019258913?w=2933&h=1955); 1. Object.is() 用來解決在ES5中 兩種相等運(yùn)算符的缺點(diǎn)。用來比較兩個(gè)值是否嚴(yán)格相等,行為和(===)基本一致。 在ES5中判斷兩個(gè)值是否相等,只能用(==)相等運(yùn)算符和(===)嚴(yán)格相等運(yùn)算符,但是這兩貨都有缺點(diǎn),前者 兩邊的值都...
閱讀 819·2019-08-30 14:05
閱讀 1711·2019-08-30 11:08
閱讀 3216·2019-08-29 15:41
閱讀 3590·2019-08-23 18:31
閱讀 1510·2019-08-23 18:29
閱讀 545·2019-08-23 14:51
閱讀 2102·2019-08-23 13:53
閱讀 2125·2019-08-23 13:02