首页 > 解决方案 > 如何最好地将 JSON 对象值与 JScript 中的固定数组进行比较

问题描述

我想将 JSON 值与一组值进行比较,但我不知道最好的情况是什么。

我得到了一个带有预期值的 JSON 对象(可能有 1 个值、2 个或更多)一个来自数据库。前任:

我的 JSON 变量是:

 var expValues = {
            "id": "123",
            "age": 23
        };

我的数据库会将一些值推送到对象数组。

前任:

    if ((rs.BOF) && (rs.EOF))
    {
        //nothing found;
    }
    else
    {
        while (!rs.EOF)
        {
            aDetails.push(
            {
                "id": rs.fields("id").Value,
                "name": rs.fields("name").Value,
                "age": rs.fields("age").Value,
                "sex": rs.fields("sex").Value,
                "hobby": rs.fields("hobby").Value
            });
            rs.MoveNext();
        }
    }
     rs.close;
 //Close connection then return
 return aDetails;

基本上我想确保来自 JSON 的值与来自 DB 的正确值相匹配。(例如 ID)。

标签: arraysjsonloopsfor-loopjscript

解决方案


我假设aDetails有类似下面的数据。

let aDetails = [{
  "id": "123",
   "name": "as",
   "age": 23,
   "sex": "m",
   "hobby": "abc"
}, {
  "id": "1234",
   "name": "as1",
   "age": 23,
   "sex": "m",
   "hobby": "abc"
}, {
  "id": "12",
   "name": "as2",
   "age": 23,
   "sex": "m",
   "hobby": "abc"
}]

var expValues = {
            "id": "123",
            "age": 23
        };
        
function isObjectMatched(obj) {
  return aDetails.some(d => Object.entries(obj).every(([k, v]) => d[k] == v))
}

console.log(isObjectMatched(expValues))


推荐阅读