亚洲免费乱码视频,日韩 欧美 国产 动漫 一区,97在线观看免费视频播国产,中文字幕亚洲图片

      1. <legend id="ppnor"></legend>

      2. 
        
        <sup id="ppnor"><input id="ppnor"></input></sup>
        <s id="ppnor"></s>

        實(shí)例詳解ECMAScript5中新增的Array方法

        字號(hào):


            這篇文章主要介紹了實(shí)例詳解ECMAScript5中新增的Array方法的相關(guān)資料,需要的朋友可以參考下
            ECMAScript5 給出了一系列新的API接口,這些接口在新的瀏覽器中大部分是被支持的,IE9,Chrome,F(xiàn)irFor都支持,也有少量API不是所有瀏覽器都支持,以下內(nèi)容僅介紹大部分被支持的API。利用新的API我們可以設(shè)計(jì)出非??孔V的類,而且還能保持原有的javaScript的風(fēng)格。
            ECMAScript5標(biāo)準(zhǔn)發(fā)布于2009年12月3日,它帶來(lái)了一些新的,改善現(xiàn)有的Array數(shù)組操作的方法。(注意兼容性)
            在ES5中,一共有9個(gè)Array方法:http://kangax.github.io/compat-table/es5/
            Array.prototype.indexOf
            Array.prototype.lastIndexOf
            Array.prototype.every
            Array.prototype.some
            Array.prototype.forEach
            Array.prototype.map
            Array.prototype.filter
            Array.prototype.reduce
            Array.prototype.reduceRight
            下面列舉了其中的7種方法,前5種方法很常見,很多開發(fā)者都會(huì)用到:
            1、indexOf()
            indexOf()方法返回在該數(shù)組中第一個(gè)找到的元素位置,如果它不存在則返回-1。
            var arr = ['apple', 'orange', 'pear'],
            found = false;
            // 未使用
            for (var i = 0, l = arr.length; i < l; i++) {
            if (arr[i] === 'orange') {
            found = true;
            }
            }
            console.log("found:", found); // ==> found: true
            // 使用后
            console.log("found:", arr.indexOf("orange") != -1); // ==> found: true
            2、filter()
            該filter()方法創(chuàng)建一個(gè)新的匹配過濾條件的數(shù)組。
            不用 filter() 時(shí):
            var arr=[{"name":"apple", "count": 2},{"name":"orange", "count": 5},{"name":"pear", "count": 3},{"name":"orange", "count": 16},]
            var newArr = [];
            for (var i = 0; i < arr.length; i++) {
            if (arr[i].name === "orange") {
            newArr.push(arr[i]);
            }
            }
            console.log("Filter results:", newArr);
            用了 filter():
            var newArr = arr.filter(function(item) {
            return item.name === "orange";
            });
            console.log("Filter results:", newArr);
            3、forEach()
            forEach為每個(gè)元素執(zhí)行對(duì)應(yīng)的方法,是用來(lái)替換for循環(huán)的。
            var arr = [1, 2, 3, 4, 5, 6, 7, 8];
            // 使用for循環(huán)
            for (var i = 0, l = arr.length; i < l; i++) {
            console.log(arr[i]);
            }
            // 使用forEach循環(huán)
            arr.forEach(function(item, index) {
            console.log(item);
            });
            4、map()
            map()對(duì)數(shù)組的每個(gè)元素進(jìn)行一定操作(映射)后,會(huì)返回一個(gè)新的數(shù)組。
            var oldArr = [{first_name: "Colin",last_name: "Toh"}, {first_name: "Addy",last_name: "Osmani"}, {first_name: "Yehuda",last_name: "Katz"}];
            function getNewArr() {
            var newArr = [];
            for (var i = 0; i < oldArr.length; i++) {
            var item = oldArr[i];
            item.full_name = [item.first_name, item.last_name].join(" ");
            newArr[i] = item;
            }
            return newArr;
            }
            var personName = getNewArr();
            personName.forEach(function(item, index) {
            console.log(item);
            })
            /****輸出結(jié)果:
            Object {first_name: "Colin", last_name: "Toh", full_name: "Colin Toh"}
            Object {first_name: "Addy", last_name: "Osmani", full_name: "Addy Osmani"}
            Object {first_name: "Yehuda", last_name: "Katz", full_name: "Yehuda Katz"}
            ****/
            使用map()方法:
            function getNewArr() {
            return oldArr.map(function(item, index) {
            item.full_name = [item.first_name, item.last_name].join(" ");
            return item;
            })
            }
            var personName = getNewArr();
            personName.forEach(function(item, index) {
            console.log(item);
            })
            /****輸出結(jié)果:
            Object {first_name: "Colin", last_name: "Toh", full_name: "Colin Toh"}
            Object {first_name: "Addy", last_name: "Osmani", full_name: "Addy Osmani"}
            Object {first_name: "Yehuda", last_name: "Katz", full_name: "Yehuda Katz"}
            ****/
            5、reduce()
            reduce()可以實(shí)現(xiàn)一個(gè)累加器的功能,將數(shù)組的每個(gè)值(從左到右)將其降低到一個(gè)值。也可以理解為:讓數(shù)組中的前項(xiàng)和后項(xiàng)做某種運(yùn)算,并累積最終值;
            場(chǎng)景: 統(tǒng)計(jì)一個(gè)數(shù)組中有多少個(gè)不重復(fù)的單詞;
            var arr = ["apple", "orange", "apple", "orange", "pear", "orange"];
            function getWordCnt() {
            var obj = {};
            for (var i = 0; i < arr.length; i++) {
            var item = arr[i];
            obj[item] = (obj[item] + 1) || 1;
            }
            return obj;
            }
            console.log(getWordCnt());
            // 輸出結(jié)果:
            // Object {apple: 2, orange: 3, pear: 1}
            使用reduce()后:
            var arr = ["apple", "orange", "apple", "orange", "pear", "orange"];
            function getWordCnt() {
            return arr.reduce(function(prev, next) {
            prev[next] = (prev[next] + 1) || 1;
            return prev;
            }, {});
            }
            console.log(getWordCnt());
            // 輸出結(jié)果:
            // Object {apple: 2, orange: 3, pear: 1}
            6 、array.some(callback[, thisObject]);callback : 函數(shù)用來(lái)測(cè)試某些元素。
            thisObject: 對(duì)象作為該執(zhí)行回調(diào)時(shí)使用。
            檢測(cè)數(shù)組中是否有某些項(xiàng)符合條件;
            var scores = [45, 60, 70, 65, 95, 85];
            var current = 60;
            function passed(score) {
            return score > current;
            }
            console.log(scores.some(passed)); // == > true
            7、array.every(callback[, thisObject]);callback : 函數(shù)用來(lái)測(cè)試每個(gè)元素。thisObject: 對(duì)象作為該執(zhí)行回調(diào)時(shí)使用。
            檢測(cè)數(shù)組中每一項(xiàng)是否符合條件;
            var scores = [45, 60, 70, 65, 95, 85];
            var current = 60;
            function passed(score) {
            return score > current;
            }
            console.log(scores.every(passed)); // == > false
            通過以上實(shí)例給大家介紹了ECMAScript5中新增的Array方法,希望對(duì)大家有所幫助!