首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用javascript映射对象数组,它返回一个未定义的值。

使用javascript映射对象数组,它返回一个未定义的值。
EN

Stack Overflow用户
提问于 2019-02-15 04:49:21
回答 1查看 63关注 0票数 1

下面的代码有什么问题?我确实是基于我想要得到的键映射的,但是我得到了一个未定义的值?我想得到每个随机码。它确实返回了有6个完全随机码,但它是未定义的。有什么问题吗?谢谢。

我的代码\

代码语言:javascript
运行
复制
let result =  me.record.job_detail.questionaires.map(a => a.random_code);

结果

结果

代码语言:javascript
运行
复制
Array(6) [ undefined, undefined, undefined, undefined, undefined, undefined ]

射门阵列(me.record.job_detail.questionaires)

"{'created_at':'2019-02-07','department':‘中小企业’,'timelimit':None,'id':16,‘sub’:‘at’a TEest‘,'title':'TEest’,'random_code':'50-49361157339'}","{'created_at':'2019-02-07',‘部门’:‘TEest DEP','timelimit':None,'id':10,“子标题”:“这是一个测试”,“标题”:“你好”,“随机代码”:‘50-612511266113’},"{'created_at':'2019-02-07','department':'SYSTECH','timelimit':None,'id':9,‘sub’:‘试图测试’,'title':'Test 101',‘随机_代码’:‘50-8381637318’},"{'created_at':'2019-02-07','department':‘中小企业’,‘title_title’:None,'id':8,‘sub’:'just to test','title':'test','random_code':'50-6819378387'}",“{created_at”:'2019-02-08','department':‘test’,'timelimit':None,'id':35,“子标题”:“测试”,“标题”:“测试”,“随机代码”:“50-2143566173”},“{‘创建_at’:'2019-02-07',‘部门’:‘测试’,‘时间限制’:无,'id':13,‘子标题’:‘测试’,‘随机_代码’:'50-2961010112644'}”

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-15 05:17:01

me.record.job_detail.questionaires正在返回一个字符串数组。不是一个对象数组。一种解决方案是解析字符串对象,但是,目前它们被认为不是有效的JSON,因此不能使用JSON.parse()传递它们。

因此,可以使用.replace()使字符串有效

.replaceJSON.parse()的结合

代码语言:javascript
运行
复制
let arr = ["{'created_at': '2019-02-07', 'department': 'sme', 'timelimit': None, 'id': 16, 'sub_title': 'this is an exam', 'title': 'exam', 'random_code': '50-49361157339'}", "{'created_at': '2019-02-07', 'department': 'TEest DEP', 'timelimit': None, 'id': 10, 'sub_title': 'this is a test', 'title': 'Hello', 'random_code': '50-612511266113'}", "{'created_at': '2019-02-07', 'department': 'SYSTECH', 'timelimit': None, 'id': 9, 'sub_title': 'Trying to test', 'title': 'Test 101', 'random_code': '50-8381637318'}", "{'created_at': '2019-02-07', 'department': 'SME', 'timelimit': None, 'id': 8, 'sub_title': 'just to test', 'title': 'Exam', 'random_code': '50-6819378387'}", "{'created_at': '2019-02-08', 'department': 'test', 'timelimit': None, 'id': 35, 'sub_title': 'test', 'title': 'test', 'random_code': '50-2143566173'}", "{'created_at': '2019-02-07', 'department': 'Test', 'timelimit': None, 'id': 13, 'sub_title': 'test', 'title': 'test', 'random_code': '50-2961010112644'}"];

let result =  arr.map(a => JSON.parse(a.replace(/'/g, '"').replace(/: (\w+)/g, ': "$1"')).random_code);
console.log(result);

上面,我使用.replace将所有单引号(')替换为双引号(因此可以使用JSON.parse()进行解析),然后确保所有值(如None)都是字符串,因此第二个替换。这样做将确保数组中的字符串对解析有效,然后允许您访问.random_code属性。

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

https://stackoverflow.com/questions/54702844

复制
相关文章

相似问题

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