首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在javascript中实现两个对象和数组的映射

如何在javascript中实现两个对象和数组的映射
EN

Stack Overflow用户
提问于 2017-11-24 01:44:14
回答 6查看 592关注 0票数 0

我有这样一个对象和数组,我从我的服务器收到了响应。我需要转换为第二种格式在下面,以便打印在网站上的价值。这是需要做对象映射的东西吗?或者解析JSON,或者请帮助。

{"header":["SEOUL","BUSAN","NAMPODONG"],"data":[[38,"CAPITAL","M31"]]}

从上面转换到下面

代码语言:javascript
复制
'{"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“的值,但是这段代码没有打印任何东西,所以不确定它是否继续。

EN

回答 6

Stack Overflow用户

发布于 2017-11-24 01:48:52

创建一个变量&循环遍历object.header以获取每个键,并使用object.data[0]获取其值

代码语言:javascript
复制
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)

票数 3
EN

Stack Overflow用户

发布于 2017-11-24 01:58:57

当您从服务器收到它时-我假设它是JSON字符串。

基本上,这里有两个数组,您希望将它们reduce到一个对象。所以我会这样做:

代码语言:javascript
复制
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

票数 2
EN

Stack Overflow用户

发布于 2017-11-25 03:54:22

您可以使用Ramda库中的zipObj

代码将如下所示:

代码语言:javascript
复制
const res = {"header":["SEOUL","BUSAN","NAMPODONG"],"data":[[38,"CAPITAL","M31"]]}

const obj = R.zipObj(res.header, res.data[0])
console.log(obj)
代码语言:javascript
复制
<script src="//cdn.jsdelivr.net/npm/ramda@latest/dist/ramda.min.js"></script>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47461051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档