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

时间:2018-03-04 04:51:05

标签: javascript arrays json

我需要一种方法来检查我的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

2 个答案:

答案 0 :(得分: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()将从"服务器"的字符串创建一个数组。由,
  • 分隔的属性
  • .includes()将检查传递的名称在数组中的位置,或者不会根据需要返回true或false。

有用的资源:

答案 1 :(得分: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 可能是最佳选择,而不是包含或包含,如果涉及到速度问题