And*_*ank 1 javascript node.js
JavaScript:给定一个字符串数组:
['properties.dimensions.length', 'properties.name']
Run Code Online (Sandbox Code Playgroud)
在散列中使用这些来验证或访问它们(实际上只是想验证密钥是否存在)的最佳方法是什么?
我在考虑字符串拆分('.'),但我无法真正理解每个数组值如何用于验证或访问哈希值.
比如['properties','dimensions','length']然后forEach要向下钻取,但理想情况下我想把它变成等价的代码:
myProperties['properties']['dimensions']['length']
Run Code Online (Sandbox Code Playgroud)
但是,如果这是一个完全hacky的方法,请随意说...并且很好!:-D
你可以尝试这样的事情:
function hasProperty(obj, props) {
if (typeof props === "string")
return hasProperty(obj, props.split("."));
for(var i = 0; i < props.length; i++) {
if (props[i] in obj)
obj = obj[props[i]];
else
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
并称之为:
var propPath = 'properties.dimensions.length';
console.log(hasProperty(myProperties, propPath));
Run Code Online (Sandbox Code Playgroud)
这是一个递归的替代方案:
function hasProperty(obj, props) {
if (typeof props === "string")
return hasProperty(obj, props.split('.'));
return props.length == 0 || props[0] in obj && hasProperty(obj[props.shift()], props);
}
var propPath = 'properties.dimensions.length';
console.log(hasProperty(myProperties, propPath));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |