使用JavaScript映射一个对象数组,它返回不确定的值



下面我的代码有什么问题?我根据想获得的密钥进行了映射,但我得到了一个不确定的值?我想获取每个随机代码。确实返回的是有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()

使字符串有效JSON

使用.replaceJSON.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上使用类似格式的数据。

最新更新