JavaScript object foreach 遍歷
阿新 • • 發佈:2019-02-16
####★技巧★ JS 引入 返回 從哪來到哪去 <script src="javascript:history.go(-1)">返回</script> <a href="javascript:history.go(-1)"></a> ####★技巧★ a.toExponential(3) 科學計數法 num = num.toExponential(3) "3.333e+0" ####★技巧★ num.toFixed(2); 限制小數點後兩位 num = num.toFixed(2); ####★技巧★ 注意filder中篩選 返回的是條件 : ‘==’ 雙等於let r = choicelist.filter(function (v, i) { return v.id == o.id }); ####★技巧★ find eq(this.index()) 查詢 li下邊的 類名為 '.num img' 的標籤 picEl = $(this).closest('li').find('.num img').attr('src'); $(this).removeClass('active').eq($(this).index()).addClass('active') ####★技巧★ javescript:void(0) <a href="javescript:void(0)">刪除</a> ####★技巧★ 計算陣列內值的和let arr = [1,2,3,4,5,6,'7']; let sums = arr.reduce(function (a, b) { return Number(a) + Number(b); }); console.log(sums) 28 ####★技巧★ target與currentTarget的區別? 通俗易懂的說法: 比如說現在有A和B, A.addChild(B) A監聽滑鼠點選事件 那麼當點選B時,target是B,currentTarget是A 也就是說,currentTarget始終是監聽事件者,而target是事件的真正發出者 target在事件流的目標階段;currentTarget在事件流的捕獲,目標及冒泡階段。 target指向被單擊的物件而currentTarget指向當前事件活動的物件(一般為父級)。 ####★技巧★alert() 顯示帶有一段訊息和一個確認按鈕的警告框。 confirm() 顯示帶有一段訊息以及確認按鈕和取消按鈕的對話方塊。 prompt() 顯示可提示使用者輸入的對話方塊。 close() 關閉瀏覽器視窗。 open(url,name,feafurse,replace) 通過指令碼開啟新的視窗URL要在新視窗中顯示的文件的 URL。如果省略了這個引數,那麼新視窗就不會顯示任何文件 var input=prompt('輸入',' '); //都是字串 var flag=confirm(123); open('error.html','_blank','width=500,height=500,left=200,top=100'); open('error.html','_self','width=500,height=500,left=200,top=100'); ####★技巧★ ES6有哪些新的? .ES6的新特性:箭頭操作符=>,模板字串(`${asd}`)等等 ####★技巧★ JSON.parse /字串轉化成物件 陣列 JSON.stringify 物件轉換為一個JSON字串 ####★技巧★ format 講任意型別轉換成字串 a = format(123) ####★技巧★ * .a{ opacity: 0; transition: all 1s; } .a:hover{ opacity: 1; } 滑鼠移動過去過1秒顯示 ####★技巧★ 獲取元素的寬度,高度 window.onload=function(){ let box1=document.getElementsByClassName('box'); console.log(getComputedStyle(box[0],null).width); console.log(getComputedStyle(box[0],null).height); //可以獲取所有,但只能獲取,不能設定 } ####★技巧★ canvas 畫的圖出現不停複製,清空不了情況。給border加一個邊框 ####★技巧★ cursor cursor:move 此游標指示某物件可被移動。 ####★技巧★ 彈幕 `<marquee>彈幕標籤</marquee>` <marquee>彈幕標籤</marquee> ####★技巧★ 面向物件 選取顏色 設定 * HTML: <input type="color" class="miaocolor" value="#000"> * JS: miaocolor.onchange=function(){ //描邊顏色 palette.strokeStyle=this.value; }; tiancolor.onchange=function(){ //填充顏色 palette.fillStyle=this.value; }; miaobtn.onclick=function(){ //描邊 palette.type = 'stroke'; }; tianbtn.onclick=function(){ //填充 palette.type = 'fill'; }; * function Palette(obj,mask,ctx){ this.type = 'stroke'; this.fillStyle = '#000'; this.strokeStyle = '#000'; } * Palette.prototype={ //初始化 init:function(){ this.ctx.lineWidth = this.lineWidth; this.ctx.strokeStyle = this.strokeStyle; //OK this.ctx.fillStyle = this.fillStyle; //OK this.ctx.lineCap = this.lineCap; // this.ctx[type](); // self[type](); }, } //選擇 填充、描邊型別 self.ctx[self.type](); ####★技巧★ 選擇 輸入 var colorchoose=document.querySelector("input[type=color]"); var widthchoose=document.querySelector(".linewidth input[type=number]"); ####★技巧★ 瀏覽器 !!!警告!!!! 顏色應該是:#000000 The specified value "#000" does not conform to the required format. The format is "#rrggbb" where rr, gg, bb are two-digit hexadecimal numbers. ####★技巧★ 瀏覽器 !!!報錯!!!! Uncaught SyntaxError: Unexpected token : 可能是上面函式少了一個 { } ####★技巧★ 瀏覽器 !!!報錯!!!! index.js:16 Uncaught TypeError: Cannot read property 'getContext' of null at index.js:16 把相關的script引用句放在html最下邊 JS中寫: window.onload=function(){} ####★技巧★ label 表單元素 當用戶選擇該標籤時,瀏覽器就會自動將焦點轉到和標籤相關的表單控制元件上。 ####★技巧★ 注意 滑鼠點選巢狀 內層也要寫 function(e) eeeeeee canvas.onmousedown=function(e){ canvas.onmousemove=function(***e***){ } } ####★技巧★ Math.pow Math.pow ####★技巧★ 弧度 角度轉換 * 弧度=(π/180)×角度 * 角度=180/π×弧度 ####★技巧★ 如果某個事件報錯 看看是否能獲取到那個元素 ####★技巧★ CSS設定全屏 html:-webkit-full-screen{ background: yellow; } ####★技巧★ 全屏 quanping:function(){ if(document.documentElement.requestFullscreen){ document.documentElement.requestFullscrren(); }else if(document.documentElement.webkitRequestFullscreen){ document.documentElement.webkitRequestFullscreen(); }else if(document.documentElement.mozRequestFullscreen){ document.documentElement.mozRequestFullscreen(); } } ### 全屏 ,退出全屏 // Webkit (works in Safari5.1 and Chrome 15) element.webkitRequestFullScreen(); document.webkitCancelFullScreen(); // Firefox 10+ element.mozRequestFullScreen(); document.mozCancelFullScreen(); // W3C 提議 element.requestFullscreen(); document.exitFullscreen(); ####★技巧★ 屬性選擇器 let done=document.querySelector('input[type=text]'); ####★技巧★ 清空內容 !!''中不能有空格!!! table.innerHTML=''; //清空內容 !! ''中不能有空格!!! ####★技巧★ 立即獲取焦點 input.focus();//立即獲取焦點 ####★技巧★ * element.getAttribute(attributename) `attributename 字串值。 必需。需要獲得屬性值的屬性名稱。` ####★技巧★ 分割 split函式 括號中要 ('; ') 在逗號後邊留一個空格 (=) 等號不加空格 let arr=cookie.split('; '); ####★技巧★ some中 是 == 雙等號 let a=this.currentele.some(function(value,index,obj){ return value.innerText==text; }) ####★技巧★ 注意迴圈 輸出false會壞事 迴圈只是等 true,輸出的false會打亂結構,干擾結果 for(let i=0;i<this.currentele.length;i++){ if(this.currentele[i].innerText==text){ return true; }/*else{ // console.log('不相等') continue aa; return false; // alert(1) };*/ } ####★技巧★ 繫結this 把外邊的this傳到函式當中 document.body.onkeydown=function(e){}.bind(this); //繫結this 把外邊的this傳到函式當中 ####★技巧★ 數值轉換字串 =String.fromCharCode(Math.floor(Math.random()*26)+65); ####★技巧★ 定義元素樣式 ele.style.cssText=` width: 50px; height: 50px; line-height: 50px; background: #F2F2F2; text-align: center; position:absolute; left:${lefts}px; top:${tops}px; ` ####★技巧★ 動畫結束之後 tr.addEventListener('webkitTransitionEnd',function(){ tr.removeChild(obj.parentNode); ####★技巧★ /* let student[1,2,{},4] forEach的是student的值,也就是value:1,2,{},4 {} 內為物件,obj.name 物件.屬性*/ let student=[ {'name':'任雨','age':'18','sex':'女','loca':'山西','tel':12345678}, {'name':'曹越','age':'19','sex':'男','loca':'山西','tel':87543213}, {'name':'李虎','age':'16','sex':'女','loca':'山西','tel':87654456}, {'name':'劉婷','age':'18','sex':'男','loca':'山西','tel':09876542} ] ####★技巧★ ${} 花括號 輸入內容 let tr=$('<tr>'); 此處tr是標籤 tr.innerHTML= `<td> ${obj.name} </td>` ####★技巧★ 注意 innerHTML 大寫 tr.innerHTML tr.innerHtml--》 錯誤 ####★技巧★ let oldv=div.innerText; //獲取標籤內的文字內容 input.value=oldv; //value是input的屬性,obj沒有value這個屬性 ####★技巧★ 給box中插入 son for(let i=0;i<100;i++){ box.innerHTML += `<div class='son'></div>`; } ####★技巧★ 給隨機顏色 obj.style.background='rgb('+Math.floor(Math.random()*256)+','+Math.floor(Math.random()*256)+','+Math.floor(Math.random()*256)+')'; ####★技巧★ nodeName 後面要大寫 if(obj.nodeName=='P'){ node.name ####★技巧★ 輸入文字框 `<textarea name="" id="" cols="30" rows="10" maxlength="100" >輸入文字</textarea>` ####★技巧★ 沒有報錯 沒有現象 * 檢查元素的下標 `let btn=$('button')[0];` ####★技巧★ 輸入文字 <div class="box" contenteditable="true"> 輸入文字 </div> <textarea name="" id="" cols="30" rows="10"> 輸入文字 </textarea> ####★技巧★ 相容問題 //IE高版本 相容問題 div.addEventListener('click', function(){alert(1)}, false) //IE低版本 相容問題 div.attachEvent('onclick', function(){alert(1)}) * this 是指向其他地方 ####★技巧★ box.style.cssText=''; ####★技巧★ this.###### let aa=this; function(){ aa. } ####★技巧★ 在第一個前面插入 imgbox.insertBefore(last,first); ####★技巧★ 報錯 setTimeout is not defined 把這一行重新寫 ####★技巧★ !!!報錯!!! 語法錯誤 下標越界 下標沒寫 box1[0].style.borderRadius='50%'; box1[0].style['border-radius']='50%'; box1[0].style.fontSize='50%'; box1[0].style.['font-size']='50%'; ####★技巧★ !!!報錯!!! Uncaught TypeError: Cannot read property 'style' of undefined at HTMLDivElement.caoyue1.(anonymous function).onclick * 注意事件下標越界:caoyue1[5].style.background='red'; 下標只有 0--4 ####★技巧★ !!!報錯!!! * Uncaught TypeError: Cannot set property 'innerText' of null script裡操作了body的東西。script在body前面。 解決方法:把script內容寫進body中,或寫在最後。</html>之後。 ####★技巧★ 瀏覽器報錯: 因為while() 括號不完整。少半個 ) 或是()的地方寫成了 {} Uncaught SyntaxError: Unexpected token { ####★技巧★ F12 在瀏覽器開啟 Alt + table 切換視窗 ####★技巧★ 這三個不用加下標 * let box=document.querySelector('.box'); * let box=document.querySelectorAll('.box'); * let win3=document. * * getElementBy * * * () ####★技巧★ 自動輪播的時間要比切換的時間多點兒 ####★技巧★ 獲取的方法: * let win1=document.querySelector('.win'); * let img2=document.querySelectorAll('.imgbox li'); * let win3=document.getElementById() * let win4=document.getElementsByClassName() * let win5=document.getElementsByTagName() * let win6=document.getElementsByName() ####★技巧★ 按住空格多選,同時操作 ####★技巧★ * let imgbox=document.querySelector('.imgbox'); * let imgs=document.querySelectorAll('.imgbox li'); ####★技巧★ animate.js的呼叫 ####★技巧★ 繼承 把一個物件的方法冒充給另一個物件 冒充法 callback.call(obj); 傳函式 this.aa=function(); zhangsan.aa.call(lisi); 傳函式傳參 this.aa=function(a,b); zhangsan.aa.call(lisi,12,32); zhangsan.aa.call(lisi,[10,20]); ####★技巧★ 注意傳參 width 是‘width’ animate(box,'width',500) ####★技巧★ 遮蔽a標籤的預設行為 ??????????????????? ?????????????????????????????? * `<a href="javascript:;"></a>` * `<a href="#"></a>` * `<a href="http://www.baidu.com" onclick=" return false; "> Click Me </a>` ####★技巧★ btn.play=function(){ this.play=aa; 新增自定義屬性,方法 } for(let i=0;i<5;i++){ btn[i].aa=i; btn[i].onmouseout=function(){ btn[i].style.background='none'; this.style.background='none'; box[this.aa].style.background='none'; } } ####★技巧★ input1[i].onmouseover=function(){ // this.style.background='red'; 等同於下一句 input1[i].style.background='red'; kw[i].style.height='200px'; let a=this; function aa(){ input1[i].style.background='red'; // this.style.background='red'; 這兒的this需要上邊 let =this 一下,否則不能用。 } } ####★技巧★ for(var i=0;i<5;i++){ input1[i].onmouseover=function(){ input1[i].style.background='red'; kw[i].style.height='200px'; } } for(let i=0;i<5;i++){ input1[i].onmouseover=function(){ input1[i].style.background='red'; kw[i].style.height='200px'; } } * var 執行完以後,i在迴圈外邊可以訪問。let不行。 * let迴圈時,可以儲存每個I的值,var不行。 ####★技巧★ .hidden{ display: hidden; } .show{ display: show; } box1[0].className = 'box show'; box1[0].className = 'box hidden'; ####★技巧★ box1[0].id='color'; 新增id box1[0].className = 'box color'; 新增類名=‘原有類名 新類名’ ####★技巧★ 清除浮動: <div style='clear:both'></div> ####★技巧★ location ####★技巧★ filter ####★技巧★ * 把函式寫進文字中 > document.body.innerText=(day+'天'+hour+'小時'+min+'分'+second+'秒'); ####★技巧★ ??????????????????????????????????? /*if(!(arr instanceof Array)){ return ; } ??????????????????????????????????? if(!Array.isArray(arr)){ return ; }*/ ####★技巧★ 陣列的遍歷+判斷 let flag=arr1.some(function(value,index,arr){ return console.log(value,index,arr) }) some(function(值 下標 遍歷的陣列){}) 回撥函式 返回值: 布林值。如果陣列中有元素滿足條件返回 true,否則返回 false。 every(function(值 下標 遍歷的陣列){}) 返回值: 布林值。如果所有元素都通過檢測返回 true,否則返回 false。 var arr=[3,-1,1,6,12,-1,65,1,-4]; var flag=arr.some(function(value,index,arr){ return value>0; }) document.write(flag); ####★技巧★ 遍歷屬性(遍歷陣列下標) for(let i in arr) var arr=[3,-1,1,6,12,-1,65,1,-4]; document.write(arr+'<br>'); for(let i in arr){ console.log(i+'--'+arr[i]); } 遍歷屬性值(遍歷陣列元素) for(let i of arr) for(let i of arr){ console.log(i); } ####★技巧★ function huoqu(arr,num=3){} 函式中num給一個預設值3。呼叫的時候傳參就可以不用傳。 ####★技巧★ 物件元素的順序:自己構造---自己原型--父構造---父原型 ####★技巧★ 建構函式和普通函式差不多 ####★技巧★ 檢視瀏覽器 繼承物件的方法,在瀏覽器console中輸入console.dir(String) console.dir(String) ####★技巧★ `true 和 false 不能進行 true++ true-- 運算` ####★技巧★ 注意建立物件的JSON方式的逗號 ####★技巧★ instanceof 判斷 console.log(str instanceof String); //false instanceof 只能判斷陣列和物件,不能用來判斷字串和數字等. console.log(str instanceof arrAy) console.log(str instanceof Object) ####★技巧★ 判斷是否為字串 if(typeof(str1)!='string'){ return '不是字串'; } ####★技巧★ 注意分割空格(' ')中間要有空格 let arr=str.split(' '); ##### 無聊望見了猶豫(磨料望跟六搖椅) 達到理想不太易(達到類桑霸臺儀) 即使有信心(即西要森森) 鬥志靠抑止(導既靠譯既) 誰人定我去和留(歲人頂我會望老) 定我心中的宇宙(頂我僧中的與奏) 只想靠兩手向理想揮手 (只想靠浪掃 航類桑非掃) 問句天幾高心中志比天更高(問歸聽給溝僧鍾執筆天更高) 自信打不死的心態活到老 (自森大霸四(sei1)的僧臺乎到樓) OH… 我有我心底故事 (喔嗷嗷...摸幽默僧得古四(sei1)) 親手寫上每段得失樂與悲與夢遺 (岑搜噻上母得(dei4)當撒浪於被與夢遺) OH… 縱有創傷不退避 (喔嗷嗷... 總要從桑把腿被) 夢想有日達成找到心底夢想的世界 (夢桑幽雅大事遭鬥僧得夢桑的四該~) 終可見... (總豪給...) 誰人沒試過猶豫 (水人毛四(sei2)國藥儀) 達到理想不太易(達到類桑霸臺儀) 即使有信心 (即西要森森) 鬥志卻抑止 (導既靠譯既) 誰人定我去和留 (歲人頂我會望老) 定我心中的宇宙 (頂我僧中的與奏) 只想靠兩手向理想揮手 (只想靠浪掃 航類桑非掃) 問句天幾高心中志比天更高 (問歸聽給溝僧鍾執筆天更高) 自信打不死的心態活到老 (自森大霸四(sei)的僧臺乎到樓) OH… 我有我心底故事 (喔嗷嗷...摸幽默僧得古事(sei1)) 親手寫上每段得失樂與悲與夢遺 (岑搜噻上母得(dei4)當撒浪於被與夢遺) OH… 縱有創傷不退避 (喔嗷嗷... 總要從桑把腿被) 夢想有日達成找到心底夢想的世界 (夢桑幽雅大事(sei4) 遭鬥僧得(dei4)夢桑的四(sei4)該~) 終可見... (總豪給...) ##★★★★★★★★★★★★物件簡寫★★★★★20170425★★★★★★★★★★★★★ //##### 物件簡寫 允許變數名作為物件的屬性名,變數的值對應物件的屬性值 let age=20; let sex='boy'; let zhangsan={age,sex}; 等價於: let lisi={age:18,'sex':'nv',tall:180}; ##### 物件屬性允許是表示式 let firstname='hello'; let lisi={ ['a'+'ge']:18, [firstname]:'li', //等價於:hello:'li' // hello:'li' } console.dir(lisi); * 此方法不允許巢狀 ren.prototype={ } //原型物件 ##### 一個物件指向另一個物件 繼承 class student extends person{ super(); } //一個物件指向另一個物件 class person{ constructor(){ this.name='zhangsan'; this.age=18; } play(){ alert(1); } } var zhangsan=new person(); //繼承 指向 student可以呼叫person的屬性、方法 class student extends person{ constructor(){ super(); this.classes='wuif1702'; this.num=1702; } homework(){ alert('寫作業'); } } var lisi =new student(); document.write(lisi.name); console.log(lisi.age); console.log(lisi.num); * 繼承方法二: `var students.prototype=new person();` //原型物件 # ★★★★★★★★★★★★字串物件★★20170425★★★★★★★★★★★★★★★★ var arr=[1,2,3,4],arr1=new Array(1,2,3,4); var str='abcd'; 等價於: var str1=new String("abcd"); #### 1.內建物件 Global 全域性 Object String Array Number Math 數學方法物件 Boolean Function RegExp 正則 2.陣列物件 DOM BOM #### 一\屬性 1.length 不識別空字元、不區分中英文 計算字串的長度 2.constructor 物件的建構函式 console.log(str.length); //返回長度 console.log(str.constructor); //返回建構函式 #### 二\ 方法 獲取型別: 1.myString.charAt(num) 返回在指定位置的字元. 2.myString.charCodeAt(num) 返回指定位置的字元的unicode編碼 3.String.fromCharCode() 接受一個或多個自定的unicode值,然後返回一個或多個字串 console.log(str.charAt(0)); //返回指定位置字元。下標從0開始 console.log(str.charAt(3)); console.log(str.charAt(5)); //-1和5為空 console.log(str.charAt(-1)); console.log(str.charCodeAt(1)); //返回指定位置字元對應的unicode編碼 console.log(String.fromCharCode(97));//將unicode編碼轉換為響應字元 #### 查詢型別 1.myString.indexOf("") 返回某個指定的字串,在字串中首次出現的位置 如果要檢索的字串值沒有出現,則該方法返回 -1。 2.myString.lastlndexOf() 返回指定的字串值最後出現的位置 3.myString.match() 3.1 console.log(str.includes("d")); //返回 true false 在字串中檢索指定的值,返回的值就是指定的值 4.search() 只能作用於正則 5.myString.replace() 將字串中的一些字元替換為另外一些字元 6.myString.repeat(5) 將字串重複5次 changdu='*'.repeat(str1.length); str2="asd"; var res=str2.repeat(5); alert(res); #### 擷取型別 1.myString.slice(start,end)。 從指定的開始位置,到結束位置(不包括)的所有字串。如果不指定結束位置,則從指定的開始位置,取到結尾 slice引數可以是負數,如果是負數,從-1開始指的是字串結尾。 eg:var str1=str.slice(-7,-3); 2.substring(start,end) 和 myString.slice(start,end)的用法一樣,唯一的區別是不支援負數。 3.substr(start,length) 從指定的位置開始取指定長度的字串。如果沒有指定長度,從指定開始的位置取到結尾。 #### 轉換型別 1.split("分割位置i",[指定的長度n]) 將一個字串分割成陣列(分割成長度為N的陣列)。從分割位置i開始轉換n個。 2.toLowerCase(); 用於把字串轉換為小寫。 3.toUpperCase() 將字串轉換為大寫. console.log('abcd'.toUpperCase()) console.log('ABcd'.toLowerCase()) #### 樣式型別 1.fontcolor() 給字串指定顏色,十六進位制表示、red、 rgb(255,0,0) 2.fontsize() 指定字串的大小 (1-7) #### 去空 trim console.log(str.trim()) console.log(str.trimLeft()) console.log(str.trimright()) ### eg: //搜尋 str1 中是否有 str2 . function isinclude(str1,str2){ if((typeof(str1)!='string')&&(str2 instanceof String)&&(arguments.length>=2)){ return '不是字串'; } else{ if(str1.indexOf(str2)==-1){ return false; }else{ return true; } } } str1='asdd'; str2="dd"; var result=isinclude(str1,str2); alert(result); 3. console.log(str.match("d")); 等同於match 3.1 console.log(str.includes("d")); //返回 true false ###### eg: 將str中的str1全部替換為"***" str='abcsdsabcsdsabc'; function rpls(str,str1){ let changdu=''; for(let i=0;i<str1.length;i++){ changdu+='*'; } let newstr=str; while(newstr.includes(str1)){ newstr = newstr.replace(str1,changdu); } return newstr; } var str='asdfghasdfghasdgfhasd'; var str1='a'; var res=rpls(str,str1); alert(res); ####eg //判斷一個字串中是否包含另一個字串 function isinclude(str1,str2){ if(str1.indexOf(str2)==-1){ return false; }else{ return true; } } str1="acdwe"; str2="de"; let result=isinclude(str1,str2); alert(result); //判斷一串字串 ('one one1 one2 ')中是否有 (one) // class= 'one one1 one2 ' function isele(str,ele){ let arr=str.split(' '); for(let i=0;i<arr.length;i++){ if(arr[i]==ele){ return true; } } return false; } var str='one3 one1 one one4'; var res=isele(str,'one'); console.log(res); /* 輸出指定字串在字串中的位置 */ function addres(str,str1){ if((typeof str!='string')||(typeof str1!='string')||(document.length<2)){ return '輸入錯誤'; } let changdu='*'.repeat(str1.length); let newstr=str; var num=0; let arr=[]; let i=0; while(newstr.includes(str1)){ /*num=newstr.indexOf(str1); console.log(num); arr[i]=num; i++;*/ arr.push(newstr.indexOf(str1)); newstr=newstr.replace(str1,changdu); } document.write(arr+'<br>'); document.write(newstr); return newstr,arr; } str="http://fanyi.youdao.com/http://fanyi.youdao.com/http://fanyi.youdao.com/http://fanyi.youdao.com/"; str1='t'; var add=addres(str,str1); console.log(add); ##### ★★★★★★★20170425★★★★★★★★ Math ★★★★★★★★★★★★★★★ var num=1.998; //取絕對值 var result=Math.abs(num); // alert(result); //取整 四捨五入 var result2=Math.round(num); // alert(result2); //向上取整 var result3=Math.ceil(num); // alert(result3); //向下取整 var result4=Math.floor(num); // alert(result4); //最大值 var num1=Math.max(1,2,3,43,45,6,77); // alert(num1); //最小值 var num1=Math.min(1,2,3,43,45,6,77); // alert(num1); //隨機數 0~1之間的隨機數 var num1=Math.random(1,2,3,43,45,6,77); // alert(num1); //隨機數 10~20之間的隨機數 var num1=Math.random(Math.random(1,2,3,43,45,6,77)*10)+10; // alert(num1); // Math.sin(); alert(Math.PI); var result=Math.sin(30*Math.PI/180); // alert(result); // Math.cos(); // Math.tan(); //保留兩位小數 var num=1.234; var result=num.toFixed(2); // alert(result); 事件流 ##★★★★★★★★★★★★ 陣列物件 ★★★★★20170426★★★★★★★★★★★★★ * BOM * dom ### 遍歷 // let arr=new Array(5); // let arr1=Array.of(5); // console.log(arr); ##### 一、屬性 * 1.length `可設定或返回陣列元素的數目` * 2.constructor `返回建構函式的引用` ##### 二、方法 新增 點點點...????????????????????????????????? A.刪除或新增 類 1. myarr.push(陣列元素......) 新增 向陣列的末尾新增新的元素,返回值是新陣列的長度。可以一次新增多個元素 //有...新增進去的是元素 /*let arr3=['a','b','c','d']; let result=arr.push(...['a','b','c','d']); console.log(result) let result1=arr.unshift(...['a','b','c','d']); console.log(result1) let rp=arr.pop() console.log(rp) let rs=arr.shift() console.log(rs)*/ * 從第2個開始擷取3個元素並把字串放進去 // arr.splice(2,3,'a','b','c'); // console.log(arr) * //連線符 // let str=arr.join('-'); // console.log(str,typeof str) * //擷取 // let arr4=arr.slice(-3); // console.log(arr4) * // 反轉 // let arr5=arr.reverse() // console.log(arr5) * //排序 /*let arr6=arr.sort(fn); function fn(a,b){ if(a<b){ return -1; }else if(a==b){ return 0; }else if(a>b){ return 1; } } console.log(arr6)*/ 2. myarr.unshift(陣列元素.....) 從開頭新增 向陣列的開頭加入新的元素,返回值是新陣列的長度。可以一次新增多個元素 3. myarr.pop() 從後邊刪。 刪除陣列的最後一個元素,返回刪除的元素 4. myarr.shift() 從前邊刪 刪除陣列的第一個元素,返回刪除的元素 5.萬能的新增刪除函式(用於插入、刪除或替換陣列的元素。) myarr.splice(index,數量,新增的元素.....) (1)index 從何處開始新增或刪除,必須是數值型別(陣列的下標) (2)數量 規定了刪除的個數,如果是0,則不刪除 (3)需要新增的元素,可以當作替換的元素 (4)如果從arrayObject中刪除了元素,則返回的是含有被刪除的元素的陣列。 eg: var arr=[1,2,3,4,5]; let res=arr.push('a','v','d'); arr.splice(1,2) //從第1個位置刪掉2個。 arr.splice(1,0,'ac','dc')//從第1個位置新增 'ac','dc' arr.splice(1,2,'acd','qwe','dsa');//從第一個位置刪除2個,再新增 'acd','qwe','dsa' ##### B.陣列的轉換 * mystr.split() //字串分割為陣列 * myarr.join([分隔符]) 把陣列元素按照指定分隔符組合成一個字串,如果沒有指定分隔符,預設是用“,”返回結果就是組合成的字串 ????????????????????????????????????????????????????????????? // let str=arr.join('-'); // join這一塊 let arr=[1,2,3,4,5]; arr.reverse(arr); //陣列反轉過來 // 陣列轉化為字串 var arr=[1,2,3,55]; // var str=arr.join('*'); // document.write(str) ##### C.陣列的分割 同字串分割 myarr.slice() 從擷取指定的開始位置,到結束位置(不包括)的元素。如果不指定結束位置,則從指定的開始位置,取到結尾(陣列的下標)支援負數(-1開頭) 返回新陣列。 陣列的分割 var newarr=arr.slice(1,3); document.write(arr); document.write(newarr); //新陣列 ##### D.陣列的連線 myarr.concat() 連線兩個或更多的陣列,並返回新陣列,但是對原陣列沒有任何影響。 // let con=arr.concat(arr1); // let con=arr.concat('a','v','d'); // let con=arr.concat(...arr1); // let con=arr.concat(...arr1,['zhangsan','lisi']); //可以連線多個數組 // 拼接 /*var arr2=[4,5,6]; var newarr=arr.concat(arr2); document.write(newarr);//新陣列*/ ##### E.陣列排序 myarr.sort(fun) 用於對陣列的元素進行排序 1. 預設是按照字元編碼的順序進行排 2. 如果要實現其他排序則要傳入一個引數,這個引數必須要函式,並且這個函式要有兩個引數 • 若 a 小於 b,在排序後的陣列中 a 應該出現在 b 之 前,則返回一個小於 0 的值。 • 若 a 等於 b,則返回 0。 • 若 a 大於 b,則返回一個大於 0 的值。 let arr=[1,2,3,4,5]; arr.reverse(arr); //將陣列前後反轉過來 let arr=[21,3,34,65,3,12,23,123,2]; arr.sort(arr); //當做字串比較來排序 console.log(arr); 排序: let arr=[21,3,34,65,3,12,23,123,2]; let arr2=arr.sort(fn); function fn(a,b){ //升序 if(a<b){ return -1; }else if(a==b){ return 0; }else if(a>b){ return 1; } } console.log(arr2); /*function fn(a,b){ //降序 if(a<b){ return 1; }else if(a==b){ return 0; }else if(a>b){ return -1; } }*/ /* 1.判斷是否存在 >0 或 <0 的數 2.判斷陣列是否都 >0 或 <0 的數 3.篩選 陣列元素>0 的元素 4.刪除重複的元素 5.從陣列中隨機獲取任意元素 6.從陣列中隨機獲取任意一個不重複的元素 */ ### eg 例子: // 1 判斷是否存在 >0 或 <0 的數 /*var arr=[-3,-1,0,6,12,65,1,-4]; function cunzai(arr,num=1){ for(let i=0;i<arr.length;i++){ console.log(arr[i]); if(arr[i]>num){ return '存在>'+num+'的'; } } return '不存在>'+num+'的'; } var res=cunzai(arr); console.log(res); alert(res)*/ // 2.判斷陣列是否都 >0 或 <0 的數 /*var arr=[-3,-1,0,6,12,65,1,-4]; function cunzai(arr){ for(let i=0;i<arr.length;i++){ console.log(arr[i]); if(arr[i]>0){ return '不是都<0'; } } } var res=cunzai(arr); console.log(res);*/ // 3.篩選 陣列元素>0 的元素 /* var arr=[-3,-1,0,6,12,65,1,-4]; function cunzai(arr){ let arr1=[]; for(let i=0;i<arr.length;i++){ console.log(arr[i]); if(arr[i]>0){ arr1.push(arr[i]); } } return arr1; } var res=cunzai(arr); console.log(res);*/ // 4.刪除重複的元素 //檢查陣列中是否包含特定的元素 /*var arr=[3,-1,1,6,12,-1,65,1,-4]; function youmeiyou(str,str1){ for(i=0;i<str.length;i++){ if(str1==str[i]){ return true; } } // if(str.includes(str1)){ // return true; // }else{ // return false; // } return false; } //去掉陣列中重複的元素 function delrepeat(arr){ let newarr=[]; for(let i=0;i<arr.length;i++){ let flag=youmeiyou(newarr,arr[i]); if(!flag){ newarr.push(arr[i]); } // newarr.push() } return newarr; } let res=delrepeat(arr); console.log(res);*/ // 5.從陣列中隨機獲取任意元素 /*var arr=[3,-1,1,6,12,-1,65,1,-4]; function randomEle(arr,times=3){ let newarr=[]; for(let i=0;i<times;i++){ var num=Math.random()*arr.length; var index=arr[Math.floor(num)]; newarr.push(index); } return newarr; } let res1=randomEle(arr); console.log(res1);*/ // 6.從陣列中隨機獲取任意一個不重複的元素 var arr=[3,-1,1,6,12,-1,65,1,-4]; function randomEle(arr,times=3){ let newarr=[]; for(let i=0;i<times;i++){ let num=Math.random()*arr.length; /