gpt4 book ai didi

javascript - 如果数组中存在重复值,则提醒用户

转载 作者:行者123 更新时间:2023-11-28 04:35:39 25 4
gpt4 key购买 nike

我有一个如下所示的递归数组结构:

var trees = [{
name: "Node-1",
myObj : { name : "Node-1"},
nodes:
[
{ name: "Node-1-1", myObj : { name : "Node-1"}, nodes[]}
]
},{
name: "Node2",
myObj : { name : "Abc"},
nodes: []
}];

var obj = {
name: "Node-1-1",
myObj : { name : "Node-1"},
nodes: []
}

现在我想匹配 trees 数组中的 obj.myObj.name 值,如果找到,那么它应该立即返回 true 或 false,并停止进一步遍历树并提醒用户发现重复项。

现在,您可以obj.myObj.name值与第一条记录匹配,因此我想提醒用户,但我总是得到错误。

这里 obj.myObj.name 值,即 Node-1 与 trees[0].myObj.name 的第一条记录匹配,因此我想提醒用户。

更新:

根据这个问题给出的答案,我更改了代码和示例输入,但是现在当我在 trees[0].myObj.name 中有 Pqr 且 obj 包含 pqr 时,因此在搜索 obj 值时树我想跳过树中的 pqr 值,因为其他树记录中不存在 pqr,但我仍然得到 pqr 存在。

var trees = [{
name: "Node-1",
myObj : { name : "Pqr"},
nodes:
[
{ name: "Node-1-1", myObj : { name : "Abc"}, nodes:[]}
]
},{
name: "Node2",
myObj : { name : "Abc"},
nodes: []
}];

var obj = {
name: "Node-1-1",
myObj : { name : "Pqr"},
nodes: []
}

checkDuplicateNodeName();

function checkDuplicateNodeName() {
var name = obj.myObj.name;
var dupe = false;
for(var idx = 0; idx < trees.length; idx++) {
if(trees[idx].myObj.name != name)
continue;
if(isDuplicateName(trees[idx], name))
{
dupe = true;
break;
}
}
if(dupe){
alert('The name "' + name + ' already exists');
}
else
alert('All is well');
}

function isDuplicateName(node, name) {
var dupeName = node.myObj.name && name && node.myObj.name.toLowerCase() == name.toLowerCase();
if(dupeName) return true;

if(node.nodes){
for(var idx=0; idx< node.nodes.length; idx++) {
if(isDuplicateName(node.nodes[idx], name)){
return true;
}
}
}
return false;
}

最佳答案

我希望这段代码能为您提供解决方案。

<!DOCTYPE html>
<html>
<head>
<script>
var trees = [{
name: "Node-1",
myObj : { name : "Node-1"},
nodes:
[
{ name: "Node-1-1", myObj : { name : "Node-1"}, nodes:[]}
]
},{
name: "Node2",
myObj : { name : "Abc"},
nodes: []
}];

var obj = {
name: "Node-1-1",
myObj : { name : "Node-1"},
nodes: []
}

for(var i = 0; i<trees.length; i++){
if(obj.myObj.name == trees[i].myObj.name){
alert("duplicate found");
break;
}
for(var j=0; j<trees[i].nodes.length; j++){
if(obj.myObj.name == trees[j].nodes[j].myObj.name){
alert("duplicate found");
break;
}
}
break;
}
</script>
</head>
<body>
<div class="data">

</div>
</body>
</html>

关于javascript - 如果数组中存在重复值,则提醒用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44240118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com