【问题标题】:Check if object key exists in array of object and add if not exists检查对象数组中是否存在对象键,如果不存在则添加
【发布时间】:2021-08-20 15:53:50
【问题描述】:

你们知道怎么做更简单/更聪明吗?

如果对象中不存在该键,我想添加一个带有名称值的标签key。这是我的清单:

myList = [
    {
        name: 'Candy',
        label: 'xx',
    },
    {
        name: 'Mike',
        label: 'yy',
    },
    {
        name: 'Betty',
    }
]

我的解决方案:

assignLabel = list => {
        const casesWithoutLabel = list.filter(({ label }) => !label).map(item => ({
            ...item,
            label: item.name
        }))

        const casesWithLabel = list.filter(({ label }) => label)

        return [ ...casesWithoutLabel, ...casesWithLabel ]
}

assignLabel(myList)

输出

[
    {
        name: 'Candy',
        label: 'xx',
    },
    {
        name: 'Mike',
        label: 'yy',
    },
    {
        name: 'Betty',
        label: 'Betty'
    }
]

它给了我很好的输出,但它并不优雅,我现在不知道如何改进。请帮帮我!

【问题讨论】:

    标签: javascript arrays object filter


    【解决方案1】:

    我已经为你创建了简单的脚本,请看一下!

    let myList = [
        {
            name: 'Candy',
            label: 'xx',
        },
        {
            name: 'Mike',
            label: 'yy',
        },
        {
            name: 'Betty',
        }
    ];
    
    let list = myList.map((item) => {
      let {name, label} = item;
      if(label == undefined){
        item["label"] = name;
      }
      return item;
    });
    
    console.log(list);

    【讨论】:

    • 欢迎您!很高兴听到!
    【解决方案2】:

    您的代码似乎非常先进,仅用于分配一个属性,所以也许我遗漏了一些东西,但您可以简单地遍历列表(或过滤 oc)

    myList = [{name: 'Candy',label: 'xx',},{name: 'Mike',label: 'yy',},{name: 'Betty',}];
    
    for(const obj of myList)
        if(!obj.label)obj.label = obj.name;
     
    console.log(myList);

    【讨论】:

      猜你喜欢
      • 2014-05-15
      • 1970-01-01
      • 2013-09-26
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 2020-06-18
      • 2020-07-11
      • 2019-11-24
      相关资源
      最近更新 更多