gpt4 book ai didi

javascript - 根据子项重新排序数组

转载 作者:行者123 更新时间:2023-12-02 14:36:09 25 4
gpt4 key购买 nike

我想获得一个有序数组,以便能够首先执行子级,然后执行所有父级。

这是一个例子:

var p1=[c1,c2,c3] // c1,c2,c3 are children
var p2=[c4,c5,c6]
var c1=[c2,p2] // but c1 can depend on parent

所以结果应该是:

var result=[c2,c6,c4,c5,c2,c3,p2,c1,p1]

另一个示例可能是重新排序 npm 依赖项,首先安装所有子项,然后安装剩余的父项,以避免由于缺少子项安装而出现错误。

预先感谢您的帮助。

最佳答案

这称为topological sorting 。这是卡恩算法的简单实现(请参阅链接):

var graph = {
p1: ['c1', 'c2', 'c3'],
p2: ['c4', 'c5', 'c6'],
c1: ['c2', 'p2']
};

var terminals = {},
sorted = [];

Object.keys(graph).forEach(n =>
graph[n].forEach(k =>
k in graph ? '' : terminals[k] = 1));

terminals = Object.keys(terminals);

while (terminals.length !== 0) {
var t = terminals.shift();
sorted.push(t);
Object.keys(graph).forEach(n => {
graph[n] = graph[n].filter(x => x != t);
if (graph[n].length === 0) {
terminals.push(n);
delete graph[n];
}
});
}

console.log(sorted)

关于javascript - 根据子项重新排序数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37436786/

25 4 0
文章推荐: javascript - 如何循环浏览输入的 Viewbag 列表?
文章推荐: javascript - Javascript 中的数组排序.. 大写,大写,小,小顺序
文章推荐: javascript - 仅在悬停时触发基础下拉菜单
文章推荐: javascript - 使用 jquery 获取排序后的第一个子
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com