您好我有1个这样的对象:
var obj = {
"00a9": ["\u00A9", ["copyright"]],
"00ae": ["\u00AE", ["registered"]],
"203c": ["\u203C", ["bangbang"]],
"2049": ["\u2049", ["interrobang"]]
}
我想用这个做一个简单的对象
var obj = {
"\u00A9":"copyright",
"\u00AE":"registered"
}
这样我就可以在不使用复杂对象的情况下轻松获取键和值。
目的:如果我像@ u00A9这样的键,或者如果我的价值与版权一样得到\ ua00A9,我想获得版权。
所以我现在尝试的是制作两个对象:
$(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];
});
它返回相同的
答案 0 :(得分:1)
使用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来实现这个目标
答案 1 :(得分:0)
使用Object.values
和reduce
一次完成两次查询。
var obj = {
"00a9": ["\u00A9", ["copyright"]],
"00ae": ["\u00AE", ["registered"]],
"203c": ["\u203C", ["bangbang"]],
"2049": ["\u2049", ["interrobang"]]
}
var result = Object.values(obj).reduce(function(acc,c){
acc.unicodeToImg[c[0]] = c[1][0];
acc.imgToUnicode[c[1][0]] = c[0];
return acc;
},{unicodeToImg:{},imgToUnicode:{}});
console.log(result);
答案 2 :(得分:0)
var obj = {
'00a9': ['\u00A9', ['copyright']],
'00ae': ['\u00AE', ['registered']],
'203c': ['\u203C', ['bangbang']],
2049: ['\u2049', ['interrobang']],
};
let finalObj = {};
const transform = (obj) => {
for (let key in obj) {
finalObj[obj[key][0]] = obj[key][1][0];
}
};
transform(obj);
console.log(finalObj);
console.log(finalObj['\u00A9']);