Symbol 转换


  • 0
    administrators

    请你完成 convertSymbolToNormalStr 函数,它会把一个键全是 Symbol 的对象转换成键全是 String 的对象,而同时值保持不变。例如:

    convertSymbolToNormalStr({ [Symbol('name')]: 'Jerry' }) // => { name: 'Jerry' }
    

  • 0

    @胡子大哈 提示信息说结果不正确,但是我自己在本地跑的结果没错0_1496715127045_upload-4c1a4732-5961-4378-adf1-44e1cae47efa


  • 0
    administrators

    @maroon 你看你一下是不是处理字符串的时候有些情况没有考虑清楚。


  • 0
    管理员

    遍历对象的symbol属性要用Object.getOwnPropertySymbols(obj)方法:

    const convertSymbolToNormalStr = obj => {
      Object.getOwnPropertySymbols(obj).forEach(symbol => {
        (typeof obj[symbol] === 'object') && convertSymbolToNormalStr(obj[symbol]);
        let key = symbol.toString().match(/\((.*)\)/)[1];
        obj[key] = obj[symbol];
        delete obj[symbol]
      })
      return obj
    }
    

  • 0

    const convertSymbolToNormalStr = obj => {
    	Reflect.ownKeys(obj).forEach(d => {
    		typeof d == 'object' && convertSymbolToNormalStr(d)
    		if (typeof d === 'symbol') obj[d.toString().slice(7 ,-1)] = obj[d]
    	})
    	return obj
    }
    

登录后回复
 

与 ScriptOJ 的连接断开,我们正在尝试重连,请耐心等待