数组拍平
var arr = [1, [[[2, 3], 4, 5], 6]];
function f(arr) {
if (Object.prototype.toString.call(arr) !== "[object Array]")
return;
var newArr = [];
var j = 0;
function fn(arr) {
for (var i = 0; i < arr.length; i++) {
if (arr[i].length && (j <= 3)) {
j += 1;
fn(arr[i]);
} else {
newArr.push(arr[i]);
}
}
}
fn(arr);
return newArr;
}
arr = f(arr);
console.log(arr);
对象拍平
var arr = [{
a: "0",
s: [
{a: "1", s: [{a: "2"}, {a: "3"}, {a: "4"}]},
{a: "6", s: [{a: "7"}, {a: "8"}, {a: "9"}]},
{e: "10"}
]
}];
function f(arr, str) {
arr.map(function (e, i) {
if (str in e) {
this.loop(e[str], str);
}
});
return arr;
}
function loop(arr, str) {
if (arr instanceof Array) {
arr.map(function (er, ir) {
if (str in er) {
b(arr, er[str], ir);
delete er[str];
this.loop(arr, str);
}
});
}
}
function b(array, childArr, index) {
var n = index + 1;
childArr.map(function (e) {
array.splice(n, 0, e);
n++;
});
return array;
}
console.log(f(arr, "s"));
var arr = [
{
a: "0",
s: [{
a: "1",
s: [{b: "2", s: [{c: "3"}]}]
}]
}
];
var arr = [{a: "0", s: [{a: "1", s: [{b: "2", s: [{c: "3"}]}]}]}];
function flatten(arr, str) {
var array = [];
arr.map(function (e, i) {
getFlattenedObj(array, str, e);
});
return array;
}
function getFlattenedObj(newArr, str, obj) {
if (str in obj) {
if (obj[str] instanceof Array) {
obj[str].map(function (e) {
getFlattenedObj(newArr, str, e);
});
delete obj[str];
}
}
newArr.unshift(obj);
}
console.log(flatten(arr, "s"));
网友评论