如何通过Javascript中的属性值获取另一个对象内的对象值

Posted

技术标签:

【中文标题】如何通过Javascript中的属性值获取另一个对象内的对象值【英文标题】:How to get an object value inside another object by a property value in Javascript 【发布时间】:2021-10-18 05:24:57 【问题描述】:

我有一个这样的对象

const test =  
        '/blogs/architecture': 
            
                name: 'Architecture',
                icon: 'archway',
                iconCategory: 'fas',
                slug: '/blogs/architecture'
            
         

现在我想找到 slug 字段,我只有 name 字段。如何通过名称找到蛞蝓?请帮忙

【问题讨论】:

如果你有name = "Architecture",那么你可以使用test[/blogs/$name.toLowerCase()].slug 如果名称是两个词,如“设计理念”和对象键“/blogs/design-ideas”,那么我该怎么办 那么你可以使用test[/blogs/$name.toLowerCase().split(" ").join("-")].slug 【参考方案1】:

尝试将Object.values()Array#find() 结合使用:

const test = 
    '/blogs/architecture': 
        name: 'Architecture',
        icon: 'archway',
        iconCategory: 'fas',
        slug: '/blogs/architecture'
    
;

const findSlugByName = name => 
    return Object.values(test).find(obj => obj.name === name)?.slug;


console.log(findSlugByName('Architecture'));

【讨论】:

【参考方案2】:

const test = 
    '/blogs/architecture': 
        name: 'Architecture',
        icon: 'archway',
        iconCategory: 'fas',
        slug: '/blogs/architecture'
    ,
    '/blogs/architecture2': 
        name: 'Architecture2',
        icon: 'archway',
        iconCategory: 'fas',
        slug: '/blogs/architecture'
    

const searchName = 'Architecture';
let searchResult;

const node = Object.values(test).forEach((node) => 
    if(node.name === searchName) 
        searchResult = node;
    
);

console.log(searchResult);

【讨论】:

以上是关于如何通过Javascript中的属性值获取另一个对象内的对象值的主要内容,如果未能解决你的问题,请参考以下文章

javascript获取对象直接量中的属性和属性值

如何从另一个 Qml 的 Qml 中的属性中获取值?

javascript 通过对象数组中的属性值获取不同的对象

在JSP中如何获取Button按钮中的Value值?

如何将HTML中下拉菜单和文本区域的值传递到java中的

asp.net c#向html内传值问题,高手请来