为了账号安全,请及时绑定邮箱和手机立即绑定

删除以元音js开头的对象键

删除以元音js开头的对象键

哈士奇WWW 2023-08-10 14:35:47
我需要删除所有以对象中的元音开头的键,但我不知道该怎么做。这是我到目前为止所拥有的。在此示例中,仅应保留“芯片”密钥,而应删除所有其他密钥。你们能帮我解决这个问题吗?'use strict'function removeVowelKeys(object) {  for (let key in object) {    if (key[0] === 'a' || key[0] === 'A' || key[0] === 'u' || key[0] === 'U' ||    key[0] === 'i' || key[0] === 'I' || key[0] === 'o' || key[0] === 'O' ||    key[0] === 'e' || key[0] === 'E' || key[0] === 'y' || key[0] === 'Y' ) {      delete object.key  }}}console.log(removeVowelKeys({  alarm: 'This is SPARTA!!!',  chip: 100,  isValid: false,  Advice: 'Learn it hard',  onClick: 'make it great again',}));
查看完整描述

2 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

您需要从函数返回对象,但也不应该在循环对象时从对象中删除键。


像这样的事情会做到这一点:


const removeVowelKeys = (obj) =>

  Object.fromEntries(

    Object.entries(obj).filter(

      ([k]) => !["a", "e", "i", "o", "u"].includes(k.toLowerCase()[0])

     )

  );


console.log(removeVowelKeys({

  alarm: 'This is SPARTA!!!',

  chip: 100,

  isValid: false,

  Advice: 'Learn it hard',

  onClick: 'make it great again',

}));


我还修复了您的原始方法以在迭代对象之前复制对象,并使用[square bracket]符号来正确使用您的键:


function removeVowelKeys(obj) {

  for (let key in { ...obj }) {

    if (

      key[0] === "a" ||

      key[0] === "A" ||

      key[0] === "u" ||

      key[0] === "U" ||

      key[0] === "i" ||

      key[0] === "I" ||

      key[0] === "o" ||

      key[0] === "O" ||

      key[0] === "e" ||

      key[0] === "E" ||

      key[0] === "y" ||

      key[0] === "Y"

    ) {

      delete obj[key];

    }

  }

  return obj;

}


查看完整回答
反对 回复 2023-08-10
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

我是这样做的。确保您实际上从函数中返回了一些内容...另请注意,y 在技术上不是元音。


function removeVowelKeys(obj) {

    let output = {};

    for (let key in obj) {

        if (!(['a', 'e', 'i', 'o', 'u'].includes(key[0].toLowerCase()))) output[key] = obj[key];

    }

    return output;

}


查看完整回答
反对 回复 2023-08-10
  • 2 回答
  • 0 关注
  • 84 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信