JS 常用方法集合


除數取整:

1.只保留整數部分:parseInt(5/2)

2.向上取整,有小數就整數部分加1:Math.ceil(5/2)

3,四舍五入:Math.round(9/2)

4,向下取整:Math.floor(5/2)

大小寫:

1.使字符串全部變為小寫:toLowerCase() \ toLocaleLowerCase()

2.使全部字符變為大寫:toUpperCase() \ toLocaleUpperCase()

字符串相關

1.返回指定索引的字符:charAt()

2.字符串拼接:concat()

3.取從第幾位到指定長度的字符串:substr()

var stringValue = "hello world";
console.log(stringValue.substr(3)); //"lo world"
console.log(stringValue.substr(3,7)); //"lo worl"

4.取介於兩個指定下標之間的字符串:substring()

var stringValue = "hello world";
console.log(stringValue.substring(3)); //"lo world"
console.log(stringValue.substring(3,7)); //"lo w"

5.返回一個新的數組,介於兩個指定下標之間的字符串:slice()

var stringValue = "hello world";
console.log(stringValue.slice(3)); //"lo world"
console.log(stringValue.slice(3,7)); //"lo w"

6.返回子字符串的位置(沒有找到返回-1):首次的位置:IndexOf、最后的位置:lastIndexOf

var stringValue = "hello world";
console.log(stringValue.indexOf("o"));  //4
console.log(stringValue.lastIndexOf("o")); //7

7. 刪除頭尾的空格:trim()

8.檢索指定的值:match()

var str1 = "lixiaoqi";
console.log(str1.match('iao')); //檢索字符串,返回的是字符
console.log(str1.match('lll')); //沒有指定的字符,返回的是null

9.返回指定的第一個匹配項的索引(未檢測到返回-1):search()

10.替換現有字符串:.replace()

11.把字符串分割成字符串數組:split(分隔符)

數組相關

1. 返回從原數組中指定開始下標到結束下標之間的項組成的新數組(原數組不變):slice()

var arr = [1,2,3,4,5,6,7,8];
console.log(arr.slice(4)); //從4開始到結束 [5, 6, 7, 8]
console.log(arr.slice(2,6));//數組下表從0開始,從2開始,到6的前一個位置結束 [3, 4, 5, 6]

2.splice()

刪除(2個參數,起始位置,刪除的項數)
插入(3個參數,起始位置,刪除的項數,插入的項)
替換(任意參數,起始位置,刪除的項數,插入任意數量的項數)

var arr = [1,2,3,4,5];
console.log(arr.slice(2,3)); // 實際得到的新數組的項數是end-strat [3]
console.log(arr.slice(1,5)); // [2, 3, 4, 5]

3.將參數添加到數組的最后,返回新數組的長度:push()

var arr = [1,2,3,4,5];
console.log(arr.push(6,7,8)); // 返回的是新數組的長度 8

4.刪除數組的最后一個元素,返回被刪除的值(減少數組的長度):pop()

var arr = ['a', 'b', 'c', 'd', 'e'];
console.log(arr.pop()); // e
console.log(arr.length); // 4

5.向數組的開頭添加一個或多個的元素,並返回新的長度:unshift()

var arr = [1,2,3,4,5];
console.log(arr.unshift(2,4,5,{name:'liqi'})); //返回的是新數組的長度 9

6.刪除數組的第一個參數,數組的長度減1:shift()

var arr = ['a', 'b', 'c', 'd', 'e'];
console.log(arr.shift()); // 返回的是刪除的數組的值 a

7.按指定的參數對數組進行排序,返回的值是經過排序后的數組: sort()

var arr = [1,'q',3,6,2,'a',9];
console.log(arr.sort()); // 返回的是排序后的數組  [1, 2, 3, 6, 9, "a", "q"]

8.將數組中的元素進行反轉,倒序顯示:reverse()

var arr = [1,2,3,4,5]
console.log(arr.reverse()); // [5, 4, 3, 2, 1]

9.把兩個字符串連接起來,返回的值是一個副本:concat(a, b)

var arr1 = [1,'q',3,6,2,'a',9];
console.log(arr1.concat('-', arr1)); //新創建一個數組,原數組不變 [1, "q", 3, 6, 2, "a", 9, "-", 1, "q", 3, 6, 2, "a", 9]
console.log(arr1); //原數組不變 [1,'q',3,6,2,'a',9]

10.用分隔符將數組的元素組成一個字符串:join()

var arr1 = [1,'q',3,6,2,'a',9];
console.log(arr1.join(',')); //以逗號分隔 1,q,3,6,2,a,9
console.log(arr1.join(' ')); //以空格分隔 1 q 3 6 2 a 9

11.從數組的開頭向后查找,(接受兩個參數,要查找的項和查找起點的位置索引):indexOf()

var arr = [1,2,3,4,5,6,78];
console.log(arr.indexOf(78, 2)); // 查找78所在的位置,返回的項的索引 6
console.log(arr.indexOf(3, 1)); // 2
console.log(arr.indexOf(2)); // 1

12.從數組末尾開始獲取:lastIndexof()

13.遍歷數組:for

var arr = [1, 4, 9, 16];
for (var i = 0; i < arr.length; i++){
    console.log(arr[i]);
}

14.對數組的每個元素執行一次提供的函數:foeEach()

var arr = ['a', 'b', 'c'];
arr.forEach(function(item) {
  console.log(item);  // a  // b  // c 
});

15.對數組的每一項運行給定的函數,返回沒戲函數調用的結果組成的數組:map()

var arr = [1, 4, 9, 16];
console.log(arr.map(x => x * 2)); //對數組的每項*2 [2, 8, 18, 32]

16.通過檢查指定數組中符合條件的所有元素(不會改變原始數組):filter()

var arr = [1,12,7,8,5]
function fn(i) {
   return i > 5;
}
console.log(arr.filter(fn)); // [12, 7, 8]

17.把數組轉換成字符串,每一項用,分割:toString()

var arr = [1,2,3,4,5]
console.log(arr.toString()); // 1,2,3,4,5

18.every和some

every 是所有函數的每個回調都返回 true 的時候才會返回 true,當遇到 false 的時候終止執行,返回 false。

some 函數是存在有一個函數返回 true 的時候終止執行並返回 true,否則返回 false。

// every
var arr = [1,6,8,-2,-5,7,-4]
var isPositive = arr.every(function(value){
    return value > 0;
})
console.log(isPositive) // false

//some
var arr = [1,6,8,-2,-5,7,-4]
var isPositive = arr.some(function(value){
    return value > 0;
})
console.log(isPositive) // true

19.reduce(function(v1,v2),value) 和 reduceRight(functio(v1,v2),value)

遍歷數組,調用回調函數,將數組元素組合成一個值,reduce 從索引最小值開始,reduceRight 反向,方法有兩個參數(回調函數,把兩個值合成一個,返回結果;value,一個初始值,可選) 

var arr = [1,2,3,4,5,6]
console.log(arr.reduce(function(v1,v2){
    return v1 + v2;
})) // 21
//開始是1+2 = 3,之后3+3 =6,之后6+4 =10,之后
//10+5 =15,最后15+6 =21

console.log(arr.reduce(function(v1,v2){
    return v1 - v2;
},100)) // 79
//開始的時候100-1=99,之后99-2=97,之后97-3=94,之后
//94-4=90,之后90-5=85,最后85-6=79

20.判斷一個對象是否為數組:isArray()

var arr = [3,4,5]
console.log(Array.isArray(arr)); // true

Math

Math本身就是一個對象, 不需要在通過構造函數去創建, 該對象中集合了很多關於數學運算的方法

Math.abs() 獲取一個對象的絕對值

Math.round() 四舍五入

Math.PI π

Math.max() 求幾個數的最大數

Math.min() 求幾個數的最小數

Math.ceil() 向上取整

Math.floor() 向下取整

Math.random() 隨機數 (隨機生成0 ~1之間的數)

 

JS選取DOM元素的方法

注意:原生JS選取DOM元素比使用jQuery類庫選取要快很多

1、通過ID選取元素

document.getElementById('myid');

2、通過CLASS選取元素

document.getElementsByClassName('myclass')[0];

3、通過標簽選取元素

document.getElementsByTagName('mydiv')[0];

4、通過NAME屬性選取元素(常用於表單)

document.getElementsByName('myname')[0];

JS修改CSS樣式

document.getElementById('myid').style.display = 'none';

JS修改CLASS屬性

document.getElementById('myid').className = 'active';

如果有多個CLASS屬性,即用空格隔開

document.getElementById('myid').className = 'active div-1';

移除該元素上的所有CLASS

document.getElementById('myid').className = '';

注意:使用classList會優於使用className

document.getElementById('myid').classList.item(0); //item為類名的索引

document.getElementById('myid').classList.length; //只讀屬性

document.getElementById('myid').classList.add('newClass'); //添加class

document.getElementById('myid').classList.remove('newClass'); //移除class

document.getElementById('myid').classList.toggle('newClass'); //切換,有則移除,沒有則添加

document.getElementById('myid').classList.contains('newClass'); //判斷是否存在該class

補充:add和remove方法不允許鏈式操作,因為返回的都是undefined,其次,也不允許同時添加或刪除多個class,可以自行擴展一下

JS修改文本

document.getElementById('myid').innerHTML = '123';

JS創建元素並向其中追加文本

var newdiv = document.createElement('div');
var newtext = document.createTextNode('123');
newdiv.appendChild(newtext);
document.body.appendChild(newdiv);

同理:removeChild()移除節點,並返回節點

cloneNode() 復制節點
insertBefore() 插入節點(父節點內容的最前面)

注意:insertBefore() 有兩個參數,第一個是插入的節點,第二個是插入的位置

追加元素的幾種方法:

1.在父級最前面追加一個子元素:prepend()

$('#page ul').prepend('<li id="prevPage">上一頁</li>');

2.在父級最后面追加一個子元素:append()

$('#page ul').append('<li id="nextPage">下一頁</li>');

3.將子元素追加到父級的最前面:prependTo()

$("<li id="prevPage">上一頁</li>").prependTo($("#page ul"));

4.將子元素追加到父級的最后:appendTo()

$("<li id="nextPage">下一頁</li>").appendTo($("#page ul")); 

5.在當前元素之前追加(是同級關系):before()

$("#wrap").before("<p class='siblings'>我是同級元素before</p>");

6.在當前元素之后追加(是同級關系):after()

$("#wrap").after("<p class='siblings'>我是同級元素after</p>");

7.將元素追加到指定對象的前面(是同級關系):insertBefore()

$("<p class='three'>我是同級元素insertBefore</p>").insertBefore($("#wrap")); 

8.將元素追加到指定對象的后面(是同級關系):insertAfter()

$("<p class='three'>我是同級元素insertAfter</p>").insertAfter($("#wrap"));  

9.在節點的最后追加子元素:appendChild()

// 創建script標簽
var script = document.createElement('script');
// 設置src屬性
script.src = 'http://localhost:3001/better?callback=fn2';
// 將script標簽追加到頁面中
document.body.appendChild(script);

// 或者
// 創建p節點            
var para = document.createElement("p");
// 創建文本節點            
var node = document.createTextNode("我是子集appendChild新段落。"); 
// 把文本節點添加到p節點里            
para.appendChild(node);  
// 查找div            
var element = document.getElementById("wrap"); 
// 把p節點添加到div1里            
element.appendChild(para); 

JS返回所有子節點對象 childNodes

firstChild 返回第一個子節點
lastChild 返回最后一個子節點
parentNode 返回父節點對象
nextSibling 返回下一個兄弟節點對象
previousSibling 返回前一個兄弟節點對象
nodeName 返回節點的HTML標記名稱

var mylist = document.getElementById('myid');
for(var i=0,i<mylist.childNodes.length;i++){
  console.log(mylist.childNodes[i]);
}

 

常用的封裝好的方法:

1、n-m之間的隨機數

function numRandom(n, m) {
        if (n > m) {
            return parseInt(m + Math.random() * (n - m + 1));
        } else {
            return parseInt(n + Math.random() * (m - n + 1));
        }
}

2、時間過濾器 yyyy-mm-dd hh:mm:ss

filters = (data) =>{
            var time = new Date(data);
            var timeStr = time.getFullYear()+"-"+
            (time.getMonth()+1).toString().padStart(2,"0")+"-"+
            time.getDate().toString().padStart(2,"0")+ " "+
            time.getHours().toString().padStart(2,"0")+":"+
            time.getMinutes().toString().padStart(2,"0")+":"+
            time.getSeconds().toString().padStart(2,"0");
            return timeStr;
}

function formatDate(date) {
            var year = date.getFullYear();
            var month = date.getMonth() + 1;
            var day = date.getDate();
            var hour = date.getHours();
            var minute = date.getMinutes();
            var second = date.getSeconds();
                // return year+"-"+month+"-"+date+" "+hour+":"+minute+":"+second;
            return year + '-' + (String(month).length > 1 ? month : '0' + month) + '-' +
            (String(day).length > 1 ? day : '0' + day) + ' ' + (String(hour).length > 1 ? hour : '0' + hour) + ':' + (String(minute).length > 1 ? minute : '0' + minute)
            + ':' + (String(second).length > 1 ? second : '0' + second)
}
//如果記得時間戳是毫秒級的就需要*1000 不然就錯了記得轉換成整型
 
var d = new Date();  //Tue Mar 26 2019 05:00:00 GMT+0800 (中國標准時間)
console.log(formatDate(d))  //2019-03-26 05:00:00
      

3、返回頂部通用方法

function backTop(btnId) {
        var btn = document.getElementById(btnId);
        var d = document.documentElement;
        var b = document.body;
        window.onscroll = set;
        btn.style.display = "none";
        btn.onclick = function () {
            btn.style.display = "none";
            window.onscroll = null;
            this.timer = setInterval(function () {
                d.scrollTop -= Math.ceil((d.scrollTop + b.scrollTop) * 0.1);
                b.scrollTop -= Math.ceil((d.scrollTop + b.scrollTop) * 0.1);
                if (d.scrollTop + b.scrollTop == 0)
                    clearInterval(btn.timer, (window.onscroll = set));
            }, 10);
        };
        function set() {
            btn.style.display = d.scrollTop + b.scrollTop > 100 ? "block" : "none";
        }
}
backTop("goTop");

對象Object構造方法

Object.assign()將所有可枚舉的自身屬性的值從一個或多個源對象復制到目標對象。

Object.create()用指定的原型對象和屬性創建一個新對象。

Object.defineProperty()將給定描述符描述的命名屬性添加到對象。

Object.defineProperties()將給定描述符描述的命名屬性添加到對象。

Object.entries()返回一個包含[key, value]給定對象自己的可枚舉字符串屬性的所有對的數組。

Object.freeze()凍結對象。其他代碼無法刪除或更改其屬性。

Object.fromEntries()從可迭代的[key, value]對中返回一個新對象。(這是的反向  Object.entries)。

Object.getOwnPropertyDescriptor()返回對象的命名屬性的屬性描述符。

Object.getOwnPropertyDescriptors()返回一個包含對象自身所有屬性描述符的對象。

Object.getOwnPropertyNames()返回一個數組,其中包含給定對象自己的所有可枚舉和不可枚舉屬性的名稱。

Object.getOwnPropertySymbols()返回直接在給定對象上找到的所有符號屬性的數組。

Object.getPrototypeOf()返回prototype指定對象的。

Object.is()比較兩個值是否相同。求所有NaN值(不同於“抽象相等比較”和“嚴格相等比較”)。

Object.isExtensible()確定是否允許擴展對象。

Object.isFrozen()確定對象是否凍結。

Object.isSealed()確定對象是否密封。

Object.keys()返回一個數組,其中包含給定對象自己的所有可枚舉字符串屬性的名稱。

Object.preventExtensions()防止對象的任何擴展。

Object.seal()防止其他代碼刪除對象的屬性。

Object.setPrototypeOf()設置對象的原型(其內部[[Prototype]]屬性)。

Object.values()返回一個數組,該數組包含與給定對象自己的所有可枚舉字符串屬性相對應的值。

 

更改數組對象中屬性的參數名:

let data1 = [
   { appName: "應用1", capacity: 233456 },
   { title: "應用2", key: 124535 }
];
let data2 = [];
data1.forEach(item => {
    data2.push({
         name: item.appName || item.title,
         value: item.capacity || item.key
    });
});
console.log(data2)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM