gpt4 book ai didi

javascript - 字符串 'properties.dimensions.length' 访问散列 {properties : {dimensions: {length: 23}}}

转载 作者:行者123 更新时间:2023-11-30 08:03:57 26 4
gpt4 key购买 nike

JavaScript:给定一个字符串数组:

 ['properties.dimensions.length', 'properties.name']

在散列中使用这些来验证或访问它们(实际上只是想验证 key 是否存在)的最佳方式是什么?

我在考虑 string split('.') 但我一直无法真正理解如何使用每个数组值来验证或访问散列中的值。

比如 ['properties', 'dimensions', 'length'] 然后是 forEach 来向下钻取,但理想情况下我想把它变成代码的等价物:

myProperties['properties']['dimensions']['length']

但是如果这是一个完全 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;
}

然后这样调用它:

var propPath = 'properties.dimensions.length';
console.log(hasProperty(myProperties, propPath));

Demonstration

这是一个递归的替代方案:

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));

Demonstration

关于javascript - 字符串 'properties.dimensions.length' 访问散列 {properties : {dimensions: {length: 23}}},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21339748/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com