У меня есть большой объект, содержащий юникоды, структура данных, как показано нижесимволы Finding Unicode от объекта
var data = {
"1f1f7-1f1fa":[["\uD83C\uDDF7\uD83C\uDDFA"],"\uE512","\uDBB9\uDCEC",["ru"],28,3],
"1f1fa-1f1f8":[["\uD83C\uDDFA\uD83C\uDDF8"],"\uE50C","\uDBB9\uDCE6",["us"],28,4]
....
....
};
И я хотел бы сделать это как
var final = {
"\uD83C\uDDF7\uD83C\uDDFA" : "ru",
"\uE512" : "ru",
"\uDBB9\uDCEC" : "ru"
...
...
}
Вот код и bin
var final = {};
for(var i in data) {
var arr = [], spliceI = null;
arr = data[i];
arr = arr.filter(function(str){
return str;
});
loop:
for(var j = 0; j < arr.length; j++){
if(arr[j] === +arr[j]){
spliceI = j;
break loop;
}
}
arr.splice(spliceI, arr.length);
var vals = arr.splice(-1).pop();
if(vals == undefined) debugger;
console.log(vals);
arr = arr.concat.apply(arr, data[i]);
for(var k = 0; k < vals.length; k++){
for(j = 0; j < arr.length; j++){
final[arr[j]] = vals[k];
}
}
}
Но неожиданно данные [i] превращаются в [], поэтому я получаю ошибку Uncaught TypeError: Cannot read property 'length' of undefined
для vals
работа.
Как исправить это, это для эможи.