【问题标题】:How to get an object value inside another object by a property value in Javascript如何通过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

标签: javascript reactjs object ecmascript-6 ecmascript-5


【解决方案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);

    【讨论】:

      猜你喜欢
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-15
      • 2012-12-07
      • 1970-01-01
      相关资源
      最近更新 更多