如何在JavaScript中检查此JSON数组中的重复?

问题描述 投票:-3回答:2

我需要一种方法来检查我的JSON数组中是否已存在服务器。

这是一个示例JSON数组:

[{
  "ID": 14,
  "PID": 15728,
  "Online": 1,
  "Servers": "staging,dev,test"
}, {
  "ID": 9,
  "PID": 6048,
  "Online": 1,
  "Servers": ""
}, {
  "ID": 8,
  "PID": 13060,
  "Online": 1,
  "Servers": "ubuntu,test"
}, {
  "ID": 7,
  "PID": 15440,
  "Online": 1,
  "Servers": "main"
}]

我需要一个JavaScript函数来处理这个问题。

示例调用可以是:

checkForDupes("staging") -> true
checkForDupes("debian") -> false
checkForDupes("ubuntu") -> true
checkForDupes("test") -> true
javascript arrays json
2个回答
4
投票

您可以使用some()includes()方法或数组和split()字符串方法:

let data = [
    {"ID": 14, "PID": 15728, "Online": 1, "Servers": "staging,dev,test"},
    {"ID": 9, "PID": 6048, "Online": 1, "Servers": ""},
    {"ID": 8, "PID": 13060, "Online": 1, "Servers": "ubuntu,test"},
    {"ID": 7, "PID": 15440, "Online": 1, "Servers": "main"}
];

function checkForDupes(d, s) {
  return d.some(o => o["Servers"].split(",").includes(s));
}

console.log(checkForDupes(data, "staging"));
console.log(checkForDupes(data, "debian"));
console.log(checkForDupes(data, "ubuntu"));
console.log(checkForDupes(data, "test"));

描述:

  • .some()将针对每个对象运行测试函数,如果任何一个对象通过测试,则返回true。
  • .split()将从,分隔的“Servers”属性字符串创建一个数组
  • .includes()将检查传递的名称在数组中的位置,或者不适当地返回true或false。

有用的资源:


0
投票
var checkdupe = function(param) {
    var count = [];
    for(i=0;i<json.length;i++)
        {
            if(json[i].Servers.split(',').indexOf(param) != -1)
                {
                    count.push(json[i].ID);
                }
        }
    if(count.length>1){
        return true;
    }
}

您可以使用该计数数组来获取更多细节

indexOf可能是最好的选择,而不是包含或包含,如果它涉及到速度很重要的点

© www.soinside.com 2019 - 2024. All rights reserved.