提问者:小点点

在json,Node.js中查找对象的值


我需要找到杀戮和死亡的方法(等等) 如果该名称不在对象中,我也需要它来输出一些东西。

像这样的东西:

if (medic does not have(name)) return;
const kills = medic.(name).kills

示例JSON:

{
  "assault": {
    "general": {
      "kills": 1134,
      "deaths": 1122,
      "abc": "123"
    },
    "list": {
      "A": {
        "name": "name1",
        "kills": 12,
        "deaths": 120
      },
      "B": {
        "name": "name2",
        "kills": 23,
        "deaths": 53
      }
    }
  },
  "support": {
    "general": {
      "kills": 123,
      "deaths": 11232,
      "abc": "11233"
    },
    "list": {
      "A": {
        "name": "name4",
        "kills": 12,
        "deaths": 120
      },
      "B": {
        "name": "name5",
        "kills": 23,
        "deaths": 53
      }
    }
  }
}

共2个答案

匿名用户

首先清理您的数据以获得一个漂亮的名称和信息列表:

const listOfNames = [...Object.values(data.assault.list), ...Object.values(data.support.list)]

然后使用该列表上的查找方法搜索名称,如果搜索返回未定义,则使用“未找到”备份:

const search = (name) => listOfNames.find(item => item.name===name) || "Not Found"

那么您可以在其他地方使用该搜索功能:

在此查看其实际操作:https://repl./@lukestorry/62916291

匿名用户

你需要攻击和支持吗?还是你只需要其中一个? 您的数据总是在同一个形状上吗? 我将假设它是,我将提供两者,总和和单独的一个:

const data = // your JSON here
const getAssaultKills = name => (data.assault.list[name] || {kills: 0}).kills
const getSupportKills = name => (data.support.list[name] || {kills: 0}).kills
const getTotalKills = name => 
  getSupportKills(name) + getAssaultKills(name)

getTotalKills("A") // => 24
getTotalKills("C") // => 0