Javascript - 包含比较 2 个数组 id 的方法



我正在尝试通过 id 号比较两个数组keyArraycheckArray。如果keyArray具有与checkArray匹配的 id,则使用锚标记将name附加到#mainTitle,如果不匹配,则追加到没有锚标记的#otherTitle

我正在尝试检查 id 是否存在于checkArray.includes().

目前,keyArray的所有 3 个索引都将转到 else 条件,但如果操作正确,则应将 keyArray 索引 0 中的id:2, name: online追加为超链接。

includes是我应该使用的方法,以检查它是否具有第一个数组中的匹配 ID 号?

我的预期结果是,"在线"出现在带有蓝色文本的#mainTitle下,因为id:2出现在两个数组中。

let keyArray = [{"id": 2, "name": "Online"}, {"id": 12, "name": "Retail"}, {"id": 14, "name": "Store"}]
let checkArray = [[1, "Test"], [2, "Online"], [3, "Test2"], [10, "Test3"]]

for (let el of keyArray) {
if (checkArray.includes(el.id)) {
$("#mainTitle").append("<a href='/" + el.name + "/ '/> " + el.name + "  </a>");
$("#mainTitle").append("<br />");
} else {
$("#otherTitle").append("<span>" + el.name + "  </span>");
$("#otherTitle").append("<br />");
}
}
#mainTitle {
color:blue;
}
#otherTitle {
color:red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="mainTitle"></div>
<div id="otherTitle"></div>

问题是您正在检查 checkArray 的值。 例如,第一次检查时,它看到的是[1, "Test"]而不是1。 您可以使用.map(v => v[0])映射您的 checkArray 将数组转换为数组值中的所有第一批项目之一(大概是您的索引),但我担心这些数据可能无法真正代表您的实际数据。 无论如何,投入.map()确实会产生预期的结果:

let keyArray = [{
"id": 2,
"name": "Online"
}, {
"id": 12,
"name": "Retail"
}, {
"id": 14,
"name": "Store"
}]
let checkArray = [
[1, "Test"],
[2, "Online"],
[3, "Test2"],
[10, "Test3"]
]

for (let el of keyArray) {
if (checkArray.map(v => v[0]).includes(el.id)) {
$("#mainTitle").append("<a href='/" + el.name + "/ '/> " + el.name + "  </a>");
$("#mainTitle").append("<br />");
} else {
$("#otherTitle").append("<span>" + el.name + "  </span>");
$("#otherTitle").append("<br />");
}
}
#mainTitle {
color: blue;
}
#otherTitle {
color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="mainTitle"></div>
<div id="otherTitle"></div>

最新更新