Elinizde iç içe birden fazla array var ve iç içe döngüler yapmak istemiyorsanız, çok basit bir fonksiyon ile bu sorundan kurtulabilirsiniz.
Array.protoype olarak ekleyeceğimiz kod.
Version 1 - Sonsuz derinliği dönüştürebilir
Array.prototype.rflat = function () {
var newArray = [];
this.forEach(e => {
if (Array.isArray(e)) {
newArray.push(...e.rflat());
} else {
newArray.push(e);
}
})
return newArray;
}
var arr = ["deneme", "test", "a", "b", "c",["d","e","f",["rec","rec3"]]];
arr.rflat();
// Çıktısı ["deneme", "test", "a", "b", "c", "d", "e", "f", "rec", "rec3"]
Version 2 - Tek derinliği algılayabilir
return this.reduce(function(a, b){
if(typeof a == "array") return a.rflat()
return a.concat(b);
}, []);
var arr = ["deneme", "test", "a", "b", "c",["d","e","f"]]; // İkinci derinliği algılamayacaktır
arr.rflat();
//Çıktısı ["deneme", "test", "a", "b", "c", "d", "e", "f"]