Javascript 如何在JAVA脚本中查找关键字、搜索第一个实例、做出决定,然后移动到子字符串进行进一步分析
Java脚本不是我的第一语言,需要这个来编写firebase云函数,请帮助,这是我的问题: 试图将几个json差异转换为有关操作的逻辑消息,其中包括多个操作,如查找关键字、做出决定,然后继续下一个剩余字符串 以下是我在不同操作中的json差异:Javascript 如何在JAVA脚本中查找关键字、搜索第一个实例、做出决定,然后移动到子字符串进行进一步分析,javascript,node.js,json,string,parsing,Javascript,Node.js,Json,String,Parsing,Java脚本不是我的第一语言,需要这个来编写firebase云函数,请帮助,这是我的问题: 试图将几个json差异转换为有关操作的逻辑消息,其中包括多个操作,如查找关键字、做出决定,然后继续下一个剩余字符串 以下是我在不同操作中的json差异: 添加新密钥时 {参数:{[32m+u值:{[39m[32m+defaultValue:{[39m] [32m+值:“新砷化镓”[39m[32m+}[39m[32m+}[39m}版本:{ [31m-版本号:“498”[39m[32m+版本号:“499”[3
31m+ -> addition of something
31m- -> deletion of something
b、 关键字名称:更新的\u值
价值:新砷化镓
31m+ -> addition of something
31m- -> deletion of something
请帮助我如何继续,如果有任何库可以实现这一点,那么也请让我知道,如果没有,那么如何遍历字符串并对其求值
更新1:这里我要提到我的理论方法:
当遇到“parameters”字符串时,将查找{或{31m+{31m-,根据这将分别将操作标识为已更新、已添加或已删除,并将键标识为前一个字符串:{或{32m+或{31m-,依此类推
更新2:我在评论中使用了json diff,没有“Nina”所建议的颜色代码,但在我尝试将其发送到电子邮件实用程序时,不知何故,它没有给出正确的结果。您可以使用转义颜色分隔行并检查标记
const
进程=字符串=>{
constlines=string.match(/\[3\dm.*\[39m/g).map(s=>s.slice(4,-4));
设冒号=行[0]。indexOf(':'),
i=0,
键='';
如果(行[0][0]=='-'&&line[1][0]=='+'&&line[0]。切片(1,冒号)===行[1]。切片(1,冒号)){
返回[
“更新密钥”,
`键名:${lines[0]。切片(1,冒号).trim()}`,
`旧值:${JSON.parse(行[0].slice(冒号+1))}`,
`新值:${JSON.parse(行[1].slice(冒号+1))}`
];
}
while(行[i].slice(冒号+1).trim(){
key+=(key&&“)+行[i]。切片(1,冒号)。修剪();
冒号=行[++i].indexOf(“:”);
}
key+=(key&&“)+行[i]。切片(1,冒号)。修剪();
返回[
第[0][0]行=='-'?“删除密钥”:“添加密钥”,
`密钥名称:${key}`,
`值:${JSON.parse(行[i].slice(冒号+1))}`,
];
},
数据=[
{参数:{[32m+newer_值:{[39m[32m+defaultValue:{[39m[32m+value:“gaa_新”[39m[32m+}[39m[32m+}[39m}版本:{[31m-versionNumber:“498”[39m[32m+versionNumber:“499”[39m[31m-updateTime:“2021-03-09T17:57:08.755697Z”[39m[32m+updateTime:“2021-03-09T18:01:05.4855z},,
{参数:{[32m+add_config:{[39m[32m+defaultValue:{[39m[32m+value:“test”[39m[32m+}[39m+}[39m}版本:{[31m-versionNumber:“500”[39m[32m+versionNumber:“501”[39m-updateTime:“2021-03-09T18:14:14.954691Z”[39m[32m+updateTime:“2021-03-09T18:19:15.276567Z},
{参数:{[31m-虚拟_值:{[39m[31m-默认值:{[39m[31m-值:10”[39m[31m-}[39m[31m-}[39m-新的_值:{[39m[31m-默认值:{[39m[31m-值:gaa_新的”[39m[31m-}[39m[31m-}[39m]版本:{[31m-版本号:499”[39m[32m+版本号:500]39m[2021-T14801:3205:Z][39m[32m+更新时间:“2021-03-09T18:14:14.954691Z”[39m}},
{参数:{dummy_值:{defaultValue:{[31m-value:“100000”[39m[32m+value:“10”[39m}}版本:{[31m-versionNumber:“497”[39m[32m+versionNumber:“498”[39m[31m-updateTime:“2021-03-09T17:45:47.053923Z”[39m[32m+updateTime:“2021-03-09T17:57:08.755697Z”}
];
console.log(data.map(process));
。作为控制台包装{max height:100%!important;top:0;}
您不是指JS对象吗?{parameters:{
无效JSON请添加您的方法。顺便说一句,还有一些有效的数据结构