Javascript 在两个列表中重新排序项目
给定包含以下项目的列表A{Javascript 在两个列表中重新排序项目,javascript,algorithm,performance,list,Javascript,Algorithm,Performance,List,给定包含以下项目的列表A{ var A = [A,B, [A,B,C],[A,B,C],[A,B,C,D],[A,B],A,B,C] 和列表B,其中列表A中的所有项目均被展平: var B = [A,B,A,B,C,A,B,C,A,B,C,D,A,B,A,B,C] 请注意,列表B中的内部数组表示组 对列表A中的项目重新排序最有效的方法是什么,列表B中应反映哪个顺序 例如,如果列表A中的内部数组中的项B移动到A之前,则应按如下方式更新列表: var A = [A,B, [B,A,C],
var A = [A,B, [A,B,C],[A,B,C],[A,B,C,D],[A,B],A,B,C]
和列表B,其中列表A中的所有项目均被展平:
var B = [A,B,A,B,C,A,B,C,A,B,C,D,A,B,A,B,C]
请注意,列表B中的内部数组表示组
对列表A中的项目重新排序最有效的方法是什么,列表B中应反映哪个顺序
例如,如果列表A中的内部数组中的项B移动到A之前,则应按如下方式更新列表:
var A = [A,B, [B,A,C],[A,B,C],[A,B,C,D],[A,B],A,B,C]
var B = [A,B,B,A,C,A,B,C,A,B,C,D,A,B,A,B,C]
到目前为止,我尝试了什么:
老实说,我被卡住了!我已经尝试将列表A展平,并根据列表B中的索引获取相应的项,但是,这并不可靠。例如,如果所有内部组中都有两个项,则该方法似乎有效,但是,如果有两个以上的项,则会由于索引不匹配而崩溃。有时,当列表很大,因为它可能引用了一个已经编辑过的索引。不,我无法控制编辑。我当前的尝试可以总结为:
B.indexOf(itemFromA) + indexFromA;
您可以尝试一种递归方法,将
列表a
中的所有元素逐个添加到列表B
中
//list = list that should be represented in B
//newList = [];
function sortList(list,newList) {
for(var elem of list) {
if (typeof(elem) === "object") {
sortList(elem,newList);
} else {
newList.push(elem);
}
}
return newList;
}
B = sortList(A,[]);
如果这是您想要的,请看这个?我建议对原始数组进行排序,然后从中获取一个平面数组。不,这没有帮助。请注意,我希望数组具有相同的排序,而不仅仅是合并