如何按key:value从JSON对象获取指定字段,通过id操作JSON数组对象
基于id操作JSON数组中指定对象的实现方案
完全可以通过id属性完成数组中指定对象的查询、删除操作,核心逻辑为遍历数组匹配id字段值,以下以最常用的JavaScript运行环境为例给出具体实现,其他编程语言思路一致。
注意:原示例JSON存在尾逗号语法问题,解析前需要删除否则会报错,下文已经修正语法问题
前置准备
首先需要把JSON字符串解析为对应运行环境的数组结构,JS中实现如下:
// 修正语法后的JSON字符串 const jsonStr = `[ { "dateinformation": "2021-10-05:23:01", "id": 1, "MoveCount": 3, "StartPoint": 2322, "TotalDist": 2331, "SafeDist": 21332, "Feed": 2332, "EndPoint":23245, "Count":1221 }, { "dateinformation": "2021-10-05:26:01", "id": 2, "MoveCount": 3, "StartPoint": 2322, "TotalDist": 2331, "SafeDist": 21332, "Feed": 2332, "EndPoint":23245, "Count":1221 }, { "dateinformation": "2021-10-55:03:01", "id": 3, "MoveCount": 3, "StartPoint": 2322, "TotalDist": 2331, "SafeDist": 21332, "Feed": 2332, "EndPoint":23245, "Count":1221 }]` // 解析为可操作的JS数组 const dataArr = JSON.parse(jsonStr)
1. 获取指定id的对象
用数组原生find方法,匹配到第一个符合条件的对象就返回,找不到返回undefined:
// 替换为你要查询的目标id const targetId = 2 const targetObj = dataArr.find(item => item.id === targetId) console.log(targetObj) // 输出id为2的对象
如果存在id重复、需要匹配所有符合条件的对象的场景,可以改用filter方法,返回符合条件的对象组成的新数组。
2. 删除指定id的对象
两种常用实现方案:
方案1:filter过滤(更推荐,不改变原数组)
直接过滤掉id等于目标值的元素,生成新数组:
const targetId = 2 const newArr = dataArr.filter(item => item.id !== targetId) // newArr就是删除了id为2的对象后的新数组
方案2:splice删除(会改变原数组)
先找到目标对象的下标,再通过下标删除元素:
const targetId = 2 const targetIndex = dataArr.findIndex(item => item.id === targetId) // 确认找到对应元素再执行删除,避免报错 if (targetIndex !== -1) { dataArr.splice(targetIndex, 1) } // 此时原dataArr已经删除了id为2的对象
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

