当前位置: 首页 > 知识库问答 >
问题:

访问键中带有空格的嵌套属性

秦承安
2023-03-14

这是我的目标:

var myObj = 
{
    nestedObj: {
        "My key has spaces": "You want my value"
    }
}

我不知道我收到myObj的内容。我有一个字符串变量,表示我需要的值的键。看起来像这样:

var theKey = "nestedObj['My key has spaces']";

如何使用此字符串变量从对象获取值?

显而易见的猜测是行不通的:

myObj[theKey]; // returns undefined

编辑:我希望有一个比这个例子更灵活的解决方案。也就是说,我可能需要深入到另一个层次,点符号可能会被加入到混合中。我用的是有角度的。js,并认为一定有什么东西已经做到了这一点。

共有3个答案

吕霍英
2023-03-14

编辑:更新问题的改进答案:)

链接到JsFiddle

使用正则表达式

var test1 = "nestedObj['My key has spaces']";
var test2 = "abc [\"def ghi\" ].jkl[123][ 'mn o']";

function getKeys(str) {
    // Regular expressions for the first key in the str
    var reg = [
        /^\s*\[\s*(\d+)\s*\]/,         // Case 1: [ someIntegerKey ]
        /^\s*\[\s*\'([^\']+)\'\s*\]/,  // Case 2: [ 'someKey' ]
        /^\s*\[\s*\"([^\']+)\"\s*\]/,  // Case 3: [ "someKey" ]
        /^\s*\.\s*([^\[\.]+)/          // Case 4: . someKey
    ];

    var keys = [];
    var tail = "." + str;
    var success = true;
    while (success) {
        var result = 
            tail.match(reg[0]) || 
            tail.match(reg[1]) ||
            tail.match(reg[2]) || 
            tail.match(reg[3]);

        if (result) {
            keys.push(result[1]);
            tail = tail.slice(result[0].length);
        } else {
            success = false;
        }
    }
    return keys;
}

console.log(getKeys(test1));
console.log(getKeys(test2));
寿亦
2023-03-14

尝试以下内容:

eval('myObj.' + theKey); 
左丘季
2023-03-14
  1. ['作为分隔符拆分字符串
var theKey = "nestedObj['My key has spaces']";

myObj[theKey.split("['")[0]][theKey.split("['")[1].replace("']","")];

演示:

var myObj = 
{
    nestedObj: {
        "My key has spaces": "You want my value"
    }
}

var theKey = "nestedObj['My key has spaces']";

var result = myObj[theKey.split("['")[0]][theKey.split("['")[1].replace("']","")];

alert(result);
 类似资料:
  • 问题内容: 我有以下json对象: 以下几行工作正常: 但是,如果键有空格,那么我将无法访问它们的值,例如 如何访问键名带有空格的值?可能吗 问题答案: 做到这一点的方法是通过括号表示。 有关更多信息,请在此处阅读: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Working_with_Objects

  • 描述 (Description) 您可以通过使用“。”连接访问路径的属性名来访问bean的嵌套属性的值。 分隔符。 您可以使用以下方法获取和设置Nested属性的值: PropertyUtils.getNestedProperty(Object, String) PropertyUtils.setNestedProperty(Object, String, Object) 参数: Object :

  • 问题内容: 团队,编程新手。如下图所示对Json进行编组后,我有可用数据,该数据具有嵌套的Key值。我可以访问的固定键值,如何访问嵌套键值。拆封后,这是下面显示的字节切片数据—> 我可以使用以下代码访问平面键值 这是完整的功能 问题答案: 注意:这可能不适用于您的JSON结构。我根据您的问题推断出它将是什么,但是如果没有实际的结构,我无法保证它可以在不做任何修改的情况下工作。 如果要在映射中访问它

  • 问题内容: 因此,我可以使用进行访问,但如何访问? 问题答案: 您可以这样操作:

  • 问题内容: 我有以下json对象: 以下几行工作正常: 但是,如果键有空格,那么我将无法访问它们的值,例如 如何访问键名带有空格的值?可能吗 问题答案: 做到这一点的方法是通过括号表示。