我有这样一个对象和数组,我从我的服务器收到了响应。我需要转换为第二种格式在下面,以便打印在网站上的价值。这是需要做对象映射的东西吗?或者解析JSON,或者请帮助。
{"header":["SEOUL","BUSAN","NAMPODONG"],"data":[[38,"CAPITAL","M31"]]},
从上面转换到下面
'{"SEOUL" : "38", "BUSAN" : "CAPITAL", "NAMPODONG" : "M31"}'
var finalObj = {};
response.header.forEach(function(item, index) {
finalObj[item] = response.data[0][index];
});上面的代码工作正常,因为它为标题创建了变量和循环,并获得了它的值并以html格式打印出来。标题和数据来自服务器,所以当我输入一些东西,比如"A“时,它将查找首尔标题,然后在html中打印38,如下面的表格所示。
密钥值:A
header :首尔布山NAMPODONG
数据: 38 CAPITAL M31
我在数据库中确实有很多数据,上面只是一个例子。假设我输入B,然后B不在数据库中,所以我想在html中看到"No found“的值,但是这段代码没有打印任何东西,所以不确定它是否继续。
发布于 2017-11-24 01:48:52
创建一个变量&循环遍历object.header以获取每个键,并使用object.data[0]获取其值
var myObj = {
"header": ["SEOUL", "BUSAN", "NAMPODONG"],
"data": [
[38, "CAPITAL", "M31"]
]
}
var tempObj = {};
myObj.header.forEach(function(item, index) {
tempObj[item] = myObj.data[0][index]
})
console.log(tempObj)
发布于 2017-11-24 01:58:57
当您从服务器收到它时-我假设它是JSON字符串。
基本上,这里有两个数组,您希望将它们reduce到一个对象。所以我会这样做:
const object = JSON.parse('{"header":["SEOUL","BUSAN","NAMPODONG"],"data":[[38,"CAPITAL","M31"]]}');
const result = object.header.reduce(function(accumulator, element, i){
accumulator[element] = object.data[0][i] // You had nested array here so I have to get first element.
return accumulator;
}, {});
console.log(result);
我认为data属性的嵌套数组是某种格式错误。如果不是这样,你必须先缩减它的元素,然后才是map。
发布于 2017-11-25 03:54:22
您可以使用Ramda库中的zipObj。
代码将如下所示:
const res = {"header":["SEOUL","BUSAN","NAMPODONG"],"data":[[38,"CAPITAL","M31"]]}
const obj = R.zipObj(res.header, res.data[0])
console.log(obj)<script src="//cdn.jsdelivr.net/npm/ramda@latest/dist/ramda.min.js"></script>
https://stackoverflow.com/questions/47461051
复制相似问题