我有一个如下的
JSON对象,
"Data Center": { "TMSLevel2": { "Comp-NX2/4/5/6K": "NX2/4/5/6K","Comp-NX3K": "NX3K","Comp-NX7K": "NX7K","Comp-NX9K": "NX9K","Comp-ACI": "ACI" } }
我将该文件命名为map.js,并从Node JS导入var map = require(‘./map.js’).
我正在访问它,如console.log(map [“Data center”] [“TMSLevel2”] [name]).现在名称为“Comp-NX3K”或“Comp-NX3k”或“Comp-nx3K”.
当“Comp-NX3K”打印相应的值时.但是,如果是“Comp-nx3K”,则打印“未定义”,因为没有匹配的值.
如何解决?
解决方法
您可以创建一个函数来执行正则表达式检查:
function findValueOfProperty(obj,propertyName){ let reg = new RegExp(propertyName,"i"); // "i" to make it case insensitive return Object.keys(obj).reduce((result,key) => { if( reg.test(key) ) result.push(obj[key]); return result; },[]); }
使用示例
let result = findValueOfProperty(map["Data center"]["TMSLevel2"],name) console.log(result);
你可以把它做成一个原型功能,让我更进一步
Object.prototype.find = function(propertyName) { return findValueOfProperty.bind(this,this); };
并称之为这样
var result = map["Data center"]["TMSLevel2"].find(name); console.log(result);