【发布时间】:2021-10-24 17:03:44
【问题描述】:
我有一个循环来填充 select2 的选项。如果我在我的 url 中选择了参数,我会从后端获取数据并在加载页面时自动填充它。所以我为它创建了 2 个循环。但它的生成选项多次。它创建的选项(DOM)与我的数组长度相同,我从 url 中的参数创建了一个数组。感谢您的帮助。
var myArr = urlProjects.split(",");
for (var i = 0; i < data.data.length; i++) {
myArr.forEach(e => {
if (parseInt(e) === data.data[i].id) {
var option = new Option(data.data[i].name, data.data[i].id, false, true);
element.select2().append(option);
projectsArr.push(data.data[i].id);
} else {
var option = new Option(data.data[i].name, data.data[i].id, false, false);
element.select2().append(option);
}
})
}
urlProjects (example) = 12877,12618,10925
data.data (array of objects- example object) = {
"id": 12573,
"name": "TEST",
"clientID": 1119,
"rsid": "23bdb244-c92b-42d6-bc58-3282edf27d08",
"clientName": "test",
"clients": {
"client_id": 1119,
"name": "test",
"opClientName": "[test]"
}
}
【问题讨论】:
-
urlProjects 和 data.data(示例数据)中有什么?
-
我更新了帖子
-
您检查过您的代码执行的频率吗?也许您应该在代码之前删除所有选项,以确保您永远不会有重复条目
-
您当然还有一些其他相关代码,并调用您在某个侦听器中提供的这段代码。
element.select2()是什么?一些图书馆的使用?projectsArr是什么? -
这是你在 foreach 循环中的 else 语句。如果您在 data 和 myArr 之间没有匹配,则无论如何都会放置一个元素。 myArr 正在循环遍历每个数据元素,因此您将拥有 data.length * myArr.length 个元素
标签: javascript jquery arrays loops