JavaScript数组循环
<p align="center"><strong>JavaScript<span style="font-family: 宋体">数组循环</span></strong></p><p><strong>一、前言</strong></p>
<p><span style="font-family: 宋体">利用</span>Javascript map(),reduce()<span style="font-family: 宋体">和</span><span style="font-family: Calibri">filter()</span><span style="font-family: 宋体">数组方法</span>可以遍历数组。<span style="font-family: 宋体">而不是积累起来</span>for<span style="font-family: 宋体">循环和嵌套来处理列表和集合中的数据,利用这些方法可以更好地将逻辑组织成功能的构建块,然后将它们链接起来以创建更可读和更易于理解的实现。</span><span style="font-family: Calibri">ES6</span>也<span style="font-family: 宋体">提供了一些更好的数组方法,比如</span>.find,.findIndex,.of<span style="font-family: 宋体">和</span><span style="font-family: Calibri">for..of</span><span style="font-family: 宋体">循环</span>。</p>
<p> </p>
<p>二、<strong>具体实现</strong></p>
<p><strong>1.</strong><strong>数组循环</strong></p>
<p>var officers = [s</p>
<p> { id: 20, name: 'Captain' },</p>
<p> { id: 24, name: 'General' },</p>
<p> { id: 56, name: 'Admiral' },</p>
<p> { id: 88, name: 'Commander' }</p>
<p>];</p>
<p> </p>
<p><strong>2.</strong><strong>for<span style="font-family: 宋体">循环</span></strong>,使用率最高,也是最基本的一种遍历方式</p>
<p>var officersIds = [];</p>
<p>for(var i=0,len=officers.length;i<len; i++){</p>
<p> officersIds.push(officers.id);</p>
<p>}</p>
<p>console.log(officersIds); // </p>
<p> </p>
<p><strong>3.</strong><strong>forEach<span style="font-family: 宋体">循环</span></strong></p>
<p>forEach<span style="font-family: 宋体">中传入要执行的回调函数,函数有三个参数。第一个参数为数组元素</span><span style="font-family: Calibri">(</span><span style="font-family: 宋体">必选</span><span style="font-family: Calibri">)</span><span style="font-family: 宋体">,第二个参数为数组元素索引值</span><span style="font-family: Calibri">(</span><span style="font-family: 宋体">可选</span><span style="font-family: Calibri">)</span><span style="font-family: 宋体">,第三个参数为数组本身</span><span style="font-family: Calibri">(</span><span style="font-family: 宋体">可选</span><span style="font-family: Calibri">)</span></p>
<p>var officersIds = [];</p>
<p>officers.forEach(function (officer,index,array) {</p>
<p> console.log(index); //0,1,2,3,</p>
<p> console.log(officer); //{id: 20, name: "Captain Piett"},{id: 24, name: "General Veers"},{id: 56, name: "Admiral Ozzel"},{id: 88, name: "Commander Jerjerrod"}</p>
<p> officersIds.push(officer.id);</p>
<p>});</p>
<p>console.log(officersIds); //</p>
<p><strong>4.</strong><strong>for in<span style="font-family: 宋体">循环</span></strong></p>
<p>for...in<span style="font-family: 宋体">循环可用于循环对象和数组</span><span style="font-family: Calibri">,</span><span style="font-family: 宋体">推荐用于循环对象</span><span style="font-family: Calibri">,</span><span style="font-family: 宋体">可以用来遍历</span><span style="font-family: Calibri">JSON</span></p>
<p>var officersIds = [];</p>
<p>for(var key in officers){</p>
<p> console.log(key); // 0 1 2 3 <span style="font-family: 宋体">返回数组索引</span></p>
<p> console.log(officers); //{id: 20, name: "Captain Piett"},{id: 24, name: "General Veers"},{id: 56, name: "Admiral Ozzel"},{id: 88, name: "Commander Jerjerrod"}</p>
<p> officersIds.push(officers.id);</p>
<p>}</p>
<p>console.log(officersIds); //</p>
<p><strong>5.</strong><strong>for of<span style="font-family: 宋体">循环</span></strong></p>
<p>可循环数组和对象,推荐用于遍历数组。</p>
<p>for...of<span style="font-family: 宋体">提供了三个新方法:</span></p>
<p>key()<span style="font-family: 宋体">是对键名的遍历;</span></p>
<p>value()<span style="font-family: 宋体">是对键值的遍历;</span></p>
<p>entries()<span style="font-family: 宋体">是对键值对的遍历;</span></p>
<p>let arr = ['<span style="font-family: 宋体">科大讯飞</span><span style="font-family: Calibri">', '</span><span style="font-family: 宋体">政法</span><span style="font-family: Calibri">BG', '</span><span style="font-family: 宋体">前端开发</span><span style="font-family: Calibri">'];</span></p>
<p>for (let item of arr) { </p>
<p> console.log(item); // <span style="font-family: 宋体">科大讯飞 政法</span><span style="font-family: Calibri">BG </span><span style="font-family: 宋体">前端开发</span></p>
<p>}</p>
<p>// <span style="font-family: 宋体">输出数组索引</span></p>
<p>for (let item of arr.keys()) { </p>
<p> console.log(item); // 0 1 2</p>
<p>}</p>
<p>// <span style="font-family: 宋体">输出内容和索引</span></p>
<p>for (let of arr.entries()) { </p>
<p> console.log(item + ':' + val); // 0:<span style="font-family: 宋体">科大讯飞 </span><span style="font-family: Calibri">1</span><span style="font-family: 宋体">:政法</span><span style="font-family: Calibri">BG 2</span><span style="font-family: 宋体">:前端开发</span></p>
<p>}</p>
<p>var officersIds = [];</p>
<p>for (var item of officers) {</p>
<p> console.log(item); //{id: 20, name: "Captain Piett"},{id: 24, name: "General Veers"},{id: 56, name: "Admiral Ozzel"},{id: 88, name: "Commander Jerjerrod"}</p>
<p> officersIds.push(item.id);</p>
<p>}</p>
<p>console.log(officersIds); // </p>
<p>// <span style="font-family: 宋体">输出数组索引</span></p>
<p>for(var item of officers.keys()){</p>
<p> console.log(item); // 0 1 2 3</p>
<p>}</p>
<p>// <span style="font-family: 宋体">输出内容和索引</span></p>
<p>for (let of officers.entries()) {</p>
<p> console.log(item) // 0 1 2 3 <span style="font-family: 宋体">输出数组索引</span></p>
<p> console.log(val);//{id: 20, name: "Captain Piett"},{id: 24, name: "General Veers"},{id: 56, name: "Admiral Ozzel"},{id: 88, name: "Commander Jerjerrod"}</p>
<p> console.log(item + ':' + val);</p>
<p>}</p>
<p><strong>6.</strong><strong>map<span style="font-family: 宋体">循环</span></strong></p>
<p>map() <span style="font-family: 宋体">会返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。</span></p>
<p>map() <span style="font-family: 宋体">方法按照原始数组元素顺序依次处理元素。</span></p>
<p>map <span style="font-family: 宋体">不修改调用它的原数组本身。</span></p>
<p>map()<span style="font-family: 宋体">中传入要执行的回调函数,函数有三个参数。第一个参数为数组元素</span><span style="font-family: Calibri">(</span><span style="font-family: 宋体">必选</span><span style="font-family: Calibri">)</span><span style="font-family: 宋体">,第二个参数为数组元素索引值</span><span style="font-family: Calibri">(</span><span style="font-family: 宋体">可选</span><span style="font-family: Calibri">)</span><span style="font-family: 宋体">,第三个参数为数组本身</span><span style="font-family: Calibri">(</span><span style="font-family: 宋体">可选</span><span style="font-family: Calibri">)</span></p>
<p> </p>
<p>var arr = [</p>
<p> {name:'a',age:'18'},</p>
<p> {name:'b',age:'19'},</p>
<p> {name:'c',age:'20'}</p>
<p>];</p>
<p>arr.map(function(item,index) {</p>
<p> if(item.name == 'b') {</p>
<p> console.log(index) // 1</p>
<p> }</p>
<p>})</p>
<p><strong>7.</strong><strong>filter</strong></p>
<p>filter() <span style="font-family: 宋体">方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。</span></p>
<p>array.filter(function(currentValue,index,arr){</p>
<p>}, thisValue)</p>
<p> </p>
<p>var designer = peoples.filter(function (people) {</p>
<p> return people.job === "designer";</p>
<p>});</p>
<p>组合使用</p>
<p>var totalScore = peoples</p>
<p> .filter(function (person) {</p>
<p> return person.isForceUser;</p>
<p> })</p>
<p> .map(function (choose) {</p>
<p> return choose.mathScore + choose.englishScore;</p>
<p> })</p>
<p> .reduce(function (total, score) {</p>
<p> return total + score;</p>
<p> }, 0);</p>
<p>Array.from()</p>
<p>var divs = document.querySelectorAll('div.pane'); </p>
<p>var text = Array.from(divs, (d) => d.textContent); </p>
<p>console.log("div text:", text);</p>
<p>// Old, ES5 way to get array from arguments</p>
<p>function() { </p>
<p> var args = [].slice.call(arguments);</p>
<p> //...</p>
<p>}</p>
<p> </p>
<p>// Using ES6 Array.from</p>
<p>function() { </p>
<p> var args = Array.from(arguments);</p>
<p> //..</p>
<p>}</p>
<p>var filled = Array.from(, (n) => n || 0); </p>
<p>console.log("filled:", filled); </p>
<p>// => </p><br><br>
来源:https://www.cnblogs.com/lufeibin/p/12080194.html
頁:
[1]