javascript - 方法 push 不会向先前具有相同值的向量添加值
问题描述
我将要介绍的代码的目标是创建一个辅助向量,其中将包含 petri 网转换、弧线和位置。我将一个 petri 网分成几组,每组是一个带有各自输入弧和位置的转换。
问题如下:将信息放在辅助向量的第一个位置后,我无法放置与前一组位置具有相同 ID 的位置。例如,如果我有一个 place_id=1 和 place_id=2 的转换,而下一个转换有 place_id=2 和 place_id=3,则代码不会将值 place_i=2 写入第二组的向量中。
function conflict() {
var id = [];
var source = [];
var target = [];
var aux = [];
var cont = [];
var places = pnml.getElementsByTagName("place");
var arcs = pnml.getElementsByTagName("arc");
var transitions = pnml.getElementsByTagName("transition");
for (var i = 0; i < transitions.length; i++) {
target.push(transitions[i].getAttribute("id"));
aux.push([]);
for (var j = 0; j < arcs.length; j++) {
if (arcs[j].getAttribute("target") == transitions[i].getAttribute("id")) {
id.push(arcs[j].getAttribute("id"));
source.push(arcs[j].getAttribute("source"));
//console.log(arcs[j].getAttribute( "source" ));
}
}
//console.log(id);
//console.log(arcs);
//console.log(places);
aux[i].push(id, source, target);
//id.length=0;
target = [];
source = [];
id = [];
}
}
控制台打开的平台图像 提前致谢
解决方案
在不知道很多问题的情况下,尝试改变它
aux.push([]);
对此
aux[i]=[];
这样您就可以使用索引而不是推送和索引来初始化和填充,以保持一致性。让我知道它是否有帮助
编辑:还有这个
aux[i].push(id, source, target);
对此(也许?)
aux[i].push({ id: id, source:source, target:target});
您可能希望将对象保留在辅助中,因此您需要推送一个对象,而不是像这样的 3 个参数
推荐阅读
- java - 服务器向客户端套接字发送消息
- bash - SHC 编译脚本无法使用 systemctl 运行
- powerbi - 在 Power BI 中将数字列转换为时间格式
- python - 如果为空,如何从 numpy 数组/表中删除一行
- wordpress - htaccess 使 url 从 /index.json 以及 /
- java - {Java} Vaadin 14 - 将用户限制为 1(一)个活动 UI
- react-slick - 如何删除内联 CSS 宽度:100%;显示:内联块;从反应光滑
- python - 基于布尔函数合并 Pandas Dataframe
- reactjs - 如何安全地与您的代理服务器确认 SPA 的身份?
- java - 服务中抛出异常时的Spring Boot ExceptionHandler