小編給大家分享一下js中push()與concat()有哪些區別,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
公司主營業務:網站設計制作、成都做網站、移動網站開發等業務。幫助企業客戶真正實現互聯網宣傳,提高企業的競爭能力。創新互聯公司是一支青春激揚、勤奮敬業、活力青春激揚、勤奮敬業、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰,讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創新互聯公司推出文成免費做網站回饋大家。
數組的扁平化:將多維數組變成一維數組
對于一個像這樣的嵌套數組:a=[1,[2,[3,4]],5,6]我們想要把它變成一個一維數組,有下面幾種方法:
方法一:遞歸一
function parseArr(arr,res){
var i=0;
for(i=0;i<arr.length;i++){
if(arr[i] instanceof Array){
parseArr(arr[i],res);
}else{
res.push(arr[i]);
}
}
}
var a=[1,[2,[3,4]],5,6];
var res=[];
parseArr(a,res);遞歸二(推薦)
var arr = ['mu','zi',['dig',['big','love']]]
function flatten(arr){
var res = [];
for(var i=0;i<arr.length;i++){
if(Array.isArray(arr[i])){
res = res.concat(flatten(arr[i]));
}else{
res.push(arr[i]);
}
}
return res;
}
console.log(flatten(arr))//["mu", "zi", "dig", "big", "love"]對上面的方法進行解析:
1.語法: Array.isArray(object);參數:object必需。要測試的對象。
返回值
如果 object 是數組,則為 true;否則為 false。 如果 object 參數不是對象,則返回 false。
2.push()與concat()的區別
1,push()是在原數組的基礎上修改的,執行push()方法后原數組的值也會變,在原數組后面添加值;若操作concat()的是一個數組先把原數組的每個值復制到一個新/另的數組,然后在新/另數組上進行操作,所以不會改變原數組的值。
2,如果參數不是數組,不管參數個數有多少個,push()和concat()都會直接把參數添加到數組后;如果參數是一個數組,push()就會直接把數組添加到原數組后,而concat()會把數組里的值取出來添加到原數組后。
方法二: 使用toString先變成一個字符串再使用split變成一個字符串數組(數組中的每個元素是一個字符串),最后使用map方法將數組中的每個元素返回為非字符串。
//arr數組中的元素不能為字符串只能為數組
var newArr=arr.toString().split(',').map(function(ele){
return +ele;
});
console.log(newArr)
alert(typeof arr[0]); //number方式三:使用toString()和split(',')方法
toString()
如果數組的元素都是數字,那么我們可以考慮使用 toString 方法,因為:
toString會將數組中的數以逗號形式結合起來。
toString()之后再split(',')轉成數組,并將其轉換回數字數組:
var arr = [1, [2, [3, 4],[5,[6],[7,8]]]];
var arrStr = arr.toString();
console.log(arrStr);//1,2,3,4,5,6,7,8
var strArr = arrStr.split(',');
console.log(strArr)//["1", "2", "3", "4", "5", "6", "7", "8"]方式二和方式三 的場景只適用于數組內全部是數字的情況,因為中間是全部轉換為字符串了。
方法四: 使用reduce和concat方法
Array.prototype.flatten=function(){
return this.reduce(function(prev, cur) {
var moreArr = [].concat(cur).some(Array.isArray); //判斷cur是不是一個數組
return prev.concat(moreArr ? cur.flatten() : cur);
},[]);
};
var arr=a.flatten(); //合并二維數組
var twoArr = [['mu','zi'],['dig','big'],['lucky','jiji']];
var oneArr = twoArr.reduce(function(total,currentValue){
// console.log(total)
return total.concat(currentValue);
})
console.log(oneArr);//["mu", "zi", "dig", "big", "lucky", "jiji"]reduce() 方法接收一個函數作為累加器,數組中的每個值(從左到右)開始縮減,最終計算為一個值。
reduce() 可以作為一個高階函數,用于函數的 compose。
注意: reduce() 對于空數組是不會執行回調函數的。

var arr = [1,2,3,4,5,6,7,8,9,10]
var str = arr.reduce(function(prev,cur,index,arr){
return prev + cur ;
})
console.log(str)//55方式五:es6擴展運算符
function flatten(arr){
while(arr.some(item=>Array.isArray(item)){
arr = [].concat(...arr);
}
return arr;
}由于擴展運算符一次只能展開一層數組:
var arr = [1, [2, [3, 4]]]; console.log([].concat(...arr)); // [1, 2, [3, 4]]
因此考慮只要數組中還有數組,就使用擴展運算符展開一次。
若有不足請多多指教!希望給您帶來幫助!
以上是“js中push()與concat()有哪些區別”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創新互聯行業資訊頻道!
網站題目:js中push()與concat()有哪些區別
文章來源:http://www.yijiale78.com/article8/pdssip.html
成都網站建設公司_創新互聯,為您提供網站排名、網站制作、網站導航、面包屑導航、軟件開發、用戶體驗
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯