所以我正在使用 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"},
...
但是 languages.js 不会以上面的对象格式运行,它将以这样的格式运行:
{"1":"First translation"},
{"2":"Second translation"},
{"3":"Third translation"},
...
那么我如何使用 JSON 从我的数据库中以我上面提到的格式显示对象呢?
最佳答案
可以使用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
。
- 这就是将
关于mysql - 我如何显示 json 对象 {"id":"value"} 而不是 {"col1":"id","col2:"值"},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51862527/