1 回答

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
你可以
將對(duì)象分組
level
,level
Clause
為每個(gè)和Concatenator
不同的數(shù)組收集通過迭代分組對(duì)象來重建一個(gè)新數(shù)組
使用變量
i
來獲得交替types
。
var array = [{ type: "Concatenator", level: 3 }, { type: "Clause", level: 4 }, { type: "Clause", level: 1 }, { type: "Concatenator", level: 1 }, { type: "Clause", level: 3 }, { type: "Clause", level: 4 }, { type: "Clause", level: 3 }, { type: "Concatenator", level: 4 }, { type: "Clause", level: 2 }, { type: "Concatenator", level: 2 }, { type: "Concatenator", level: 3 }, { type: "Clause", level: 2 }, { type: "Concatenator", level: 4 }],
order = { Clause: 0, Concatenator: 1 },
temp = array.reduce((r, o) => {
r[o.level] = r[o.level] || [[], []];
r[o.level][order[o.type]].push(o);
return r;
}, {}),
i = 0,
result = Object
.keys(temp)
.sort((a, b) => a - b)
.flatMap(k => {
var r = [];
while (temp[k][i].length) {
r.push(temp[k][i].shift());
i = 1 - i;
}
return r;
});
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
添加回答
舉報(bào)