下面我的代码有什么问题?我根据想获得的密钥进行了映射,但我得到了一个不确定的值?我想获取每个随机代码。确实返回的是有6个随机代码,但不确定。任何问题?谢谢。
我的代码
let result = me.record.job_detail.questionaires.map(a => a.random_code);
结果
结果
Array(6) [ undefined, undefined, undefined, undefined, undefined, undefined ]
ojects的数组(me.record.job_detail.questionaires)
[" {'create_at':'2019-02-07','decr验该:'sme','timelimit':none,'id':16,'sub_title':'这是考试,'标题':'考试','Random_Code':'50 -49361157339'}"}"," {'create_at':'2019-02-07','decr验该,'部门':'teest dep','timelimit':none,none,'id':10,'sub_title':'这是一个测试','title':'Hello','rando_code':''50 -612511266113'}"}"," {'create_at':'2019-02-07',','2019-02-07',',','部门':'Systech','timelimit':none," id":9,'sub_title':"尝试测试','title':'test 101','test 101','rando_code':'50 -8381637318}" {'create_at':'2019-02-07','部门':'sme','timelimit':note','rando_code':'50 -6819378387'}"}"," {'create_at':'2019-02-08','ementment':'test',timeLimit':none,'id,'id':35,'sub_title'sub_title':'test','title':'test','rando_code':'50 -2143566173'}"}"," {'create_at':'2019-02-07','部门','test':'test','timeLimit':none,'id':13,'sub_title':'test','title':'test','test','rando_code':'50 -296101010112644'}"}"]
me.record.job_detail.questionaires
正在返回一系列字符串。不是一系列对象。一种解决方案是解析您的字符串对象,但是,目前它们尚未被视为有效的JSON,因此不能使用JSON.parse()
传递它们。
因此,您可以使用.replace()
使用.replace
与JSON.parse()
:
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
属性。
另一种选择(因为您有字符串并且它们不是有效的JSON),可以使用match()
:
random_code
号码的顾客的字符串。
const input = [
"{'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'}"
];
console.log(input.map(x => x.match(/d+-d{3,}/g)[0]));
但是,除非您真的确定不会在strings
上使用类似格式的数据。