因此,我正在使用languages.js.org和一个名为ft_main
表ft_lang
的数据库进行多语言站点的翻译,该数据库包含2列:id,en。
使用JSON,我可以这样从数据库中显示JSON对象:
{"id":"1","en":"First translation"},
{"id":"2","en":"Second translation"},
{"id":"3","en":"Third translation"},
...
但是language.js不会以上述对象格式运行,它将以这种格式运行:
{"1":"First translation"},
{"2":"Second translation"},
{"3":"Third translation"},
...
那么如何使用JSON从数据库中显示上述格式的对象?
答案 0 :(得分:1)
您只需要遍历数组并创建一个像这样的新数组:
var data = [
{"id":"1","en":"First translation"},
{"id":"2","en":"Second translation"},
{"id":"3","en":"Third translation"}];
var newData = [];
data.forEach(function(obj) {
var newObj = {};
newObj[obj.id] = obj.en;
newData.push(newObj);
});
console.log(newData);
答案 1 :(得分:1)
您可以使用map
来简化代码:
var data = [
{"id":"1","en":"First translation"},
{"id":"2","en":"Second translation"},
{"id":"3","en":"Third translation"}];
var newData = data.map(obj => ({[obj.id]: obj.en}));
console.log(newData);
说明:
data.map(fn)
将函数fn
应用于data
数组中的每个元素,并以相同大小的数组返回结果。obj => ({[obj.id]: obj.en})
是一种转换,它接受obj
并返回一个包含单个属性的对象,其中以obj.id
作为键,而obj.en
作为值。
{"id": "foo", "en": "bar"}
变成{"foo": "bar"}
的原因。()
是必需的,因为否则JavaScript会尝试将{}
中的内容视为函数。[]
在obj.id
附近是必需的,因此解析器知道整个密钥是obj.id
而不是obj
。