处理复杂的javascript对象

比尔盖茨

您好我有1个这样的对象:

var obj = {
    "00a9": ["\u00A9", ["copyright"]],
    "00ae": ["\u00AE", ["registered"]],
    "203c": ["\u203C", ["bangbang"]],
    "2049": ["\u2049", ["interrobang"]]
}

我想用这样的简单对象

var obj = {
"\u00A9":"copyright",
"\u00AE":"registered"
}

这样我就可以轻松获得关键和价值,而无需使用该复杂的对象。

目的:如果我拥有像\ u00A9这样的密钥,我想获得版权,或者如果我拥有像版权一样的价值,那么我想要获得\ ua00A9。

所以我现在尝试的是制作2个对象:

$(obj).each(function(key,val){
    unicodeToImg[val[0]] = val[1][0];
    imgToUnicode[val[1][0]] = val[0];
});

但是当我尝试下面的代码时,它将仅返回键0和其中的所有值:

$(obj).each(function(key,val){
    $(val).each(function(k,v){
        console.log(k);
        console.log(v);
    });
    //unicodeToImg[val[0]] = val[1][0];
    //imgToUnicode[val[1][0]] = val[0];
});

它返回相同

一定的表现

使用Object.values来获取对象的值(丢弃初始密钥),然后打开奇怪格式化内部嵌套阵列成易于访问的对象,具有reduce

var obj = {
    "00a9": ["\u00A9", ["copyright"]],
    "00ae": ["\u00AE", ["registered"]],
    "203c": ["\u203C", ["bangbang"]],
    "2049": ["\u2049", ["interrobang"]]
}
const transformedObj = Object.values(obj)
  .reduce((accum, [key, [val]]) => {
    accum[key] = val;
    return accum;
  }, {});
console.log(transformedObj);
console.log(transformedObj['\u00A9']);

无需jQuery即可实现

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章