使用JSON文件的JavaScript映射数组

使用JSON文件的JavaScript映射数组,javascript,arrays,json,dictionary,Javascript,Arrays,Json,Dictionary,在JavaScript中,我有一个由三个字母组成的代码数组,还有一个JSON文件,其中每个代码都有值。我需要将代码映射到JSON文件中的相应值。 下面是一个例子: {"Roles" : [ {"code": "cmm", "fullname": "commentator"}, {"code": "cmp", "fullname": "composer"}, {"code": "cnd", "fullname": "conductor"}, {"code": "cng", "fullname":

在JavaScript中,我有一个由三个字母组成的代码数组,还有一个JSON文件,其中每个代码都有值。我需要将代码映射到JSON文件中的相应值。 下面是一个例子:

{"Roles" : [
{"code": "cmm", "fullname": "commentator"},
{"code": "cmp", "fullname": "composer"},
{"code": "cnd", "fullname": "conductor"},
{"code": "cng", "fullname": "cinematographer"},
{"code": "cns", "fullname": "censor"},
{"code": "com", "fullname": "compiler"}
]}

var arr = ["cmm", "com", "cng"];
var mappedArray = arr.map( ??? );

//mappedArray now contains: ["commentator", "composer", "cinematographer"]

我想不出一个解决这一问题的方法,它的效率不是非常低。有人能帮忙吗?

您可以使用

var obj={“角色”:[
{“代码”:“cmm”,“全名”:“评论员”},
{“code”:“cmp”,“fullname”:“composer”},
{“代码”:“cnd”,“全名”:“导体”},
{“代码”:“cng”,“全名”:“摄影师”},
{“代码”:“cns”,“全名”:“检查员”},
{“代码”:“com”,“全名”:“编译器”}
]}
var arr=[“cmm”、“com”、“cng”];
var mappedaray=obj[“角色”].过滤器(d=>arr.includes(d.code))
console.log('filteredarray',mappedArray)

console.log('Result',mappedArray.map({fullname}=>fullname))
最有效的方法仍然是使用:

const data={“Roles”:[{“code”:“cmm”,“fullname”:“commentor”},{“code”:“cmp”,“fullname”:“composer”},{“code”:“cnd”,“fullname”:“conductor”},{“code”:“cng”,“fullname”:“cinemagrapher”},{“code”:“cns”,“fullname”:“censor”},{“code”:“com”,“fullname”:“compiler”};
var arr=[“cmm”、“com”、“cng”];
常数输出=[];
for(设i=0;i-1)out.push(el.fullname);
}

控制台。注销您必须首先筛选数组,然后将其映射以获得所需的值。。 你可以试试这个

let result1 = obj["Roles"].filter(function(item) { return arr.includes(item.code)}).map(filteredObj => filteredObj.fullname);

你应该在你的问题中加入你效率极低的代码。我想我理解错了。你能写下你的预期输出吗?你正在处理多少数据?假设您没有大量的角色(数千个以上),那么效率不太可能值得花费大量时间(如果有的话)。为什么输出中有
composer
?你的意思是编译器,对吗?