问题描述
我需要对一个对象进行处理,过滤掉某些键和改造某个键值,得到我想要的结构。用JSON.parse
结合reviver
函数处理。可是得到undefined
的诡异结果。
请问下面的代码为何得不到我想要的结果呢?
我现在能得到正确的结果,但是下面的代码也不存在错误,为何得不到我想要的结果,请分析。
问题出现的环境背景及自己尝试过哪些方法
运行环境: node V9.11.2
相关代码
/**
* 过滤测试表格数据
* @param {String} key 对象键
* @param {*} value 键值
*/
let filterTestData = (key, value) => {
if (['id', 'interName', 'opt', 'ruleStr'].includes(key)) {
return value;//这些键的值 返回原值
} else if (key === 'algorithmOptRules') {
console.log(value instanceof Array)
let names = []
value.forEach(ele => {
names.push(ele['name'])
})
return names.join('、')//改造 这个键值
} else {
return undefined;//删除其他键
}
}
let test = JSON.stringify({
"id": "5c34650e307f782408c4501b",
"interId": "5c34650e307f782408c4501b",
"interName": "接口名字",
"className": "aaaaaaaa",
"route": "/a/b/c",
"opt": "mac",
"ruleStr": "00:0A:02:0B:03:0C", //表格显示 6
"algorithmOptRules": [{
"index": 1,
"algoId": "5c34677c307f781058f179a9",
"group": "aa",
"name": "afafafafaf"
},
{
"index": 1,
"algoId": "5c34677c307f781058f179a9",
"group": "aa",
"name": "你还"
}
]
})
let newTest = JSON.parse(test, filterTestData)
console.log(newTest); //undefined
你期待的结果是什么?
{
id: '5c34650e307f782408c4501b',
interName: '接口名字',
opt: 'mac',
ruleStr: '00:0A:02:0B:03:0C',
algorithmOptRules: 'afafafafaf、你还'
}
使用reviver函数