我接到了这个任务,我无法用字符串“BUSTED”替换匹配,你能帮我吗?我是JS的新手。很可能有一种更优雅的方式来做到这一点。任何帮助赞赏。
您将获得两个数组:一个包含fCommunity的每个成员,另一个包含 这涵盖了所有可能的嫌疑人。 将每个fCommunity成员从“可疑”列表中替换为“已填充”
var fCommunityMembers = ['A','B','C'];
var SuspectList = ['F','X','B','Z','Y','C','ZS','D','K','M','N'];
我设法检索匹配的成员,但如何在可疑列表中替换它们?:
Array.prototype.diff = function(SuspectList) {
var ret = [];
this.sort();
SuspectList.sort();
for(var i = 0; i < this.length; i += 1) {
if(SuspectList.indexOf( this[i] ) > -1){
ret.push( this[i] );
}
}
return ret;
};
var ListOfMatches = Array.from(fCommunityMembers.diff(SuspectList));
console.log( ListOfMatches );
答案 0 :(得分:1)
使用Array.prototype.map()
来迭代fCommunityMembers
。如果在SuspectList
返回BUSTED中找到成员,如果没有返回成员:
var fCommunityMembers = ['A','B','C'];
var SuspectList = ['F','X','B','Z','Y','C','ZS','D','K','M','N'];
var result = fCommunityMembers.map(function(member) {
return SuspectList.indexOf(member) !== -1 ? 'BUSTED' : member;
});
console.log(result);
答案 1 :(得分:0)
Judt使用这样的过滤器:
var ListOfMatches = SuspectList.filter(x => fCommunityMembers.indexOf(x) !== -1);
和forEach循环插入BUSTED而不是先前匹配的元素
fCommunityMembers.forEach((x,i,arr) => {
if (SuspectList.indexOf(x) !== -1)
arr[i] = "BUSTED";
});
答案 2 :(得分:0)
您需要的是一个可以在两个数组之间进行交集的函数
过滤器可以帮助您的情况
var fCommunityMembers = [
'A',
'B',
'C',
'D',
'F'
];
var SuspectList = [
'F',
'X',
'B',
'Z',
'Y',
'C',
'ZS',
'D',
'L'
];
var suspects= fCommunityMembers.filter(function(el){
return SuspectList.indexOf(el)>-1;
});
编辑#1 要通过破坏替换值,请执行以下操作:
var suspectsFnc = function (fc, sus) {
var busted = fCommunityMembers.filter(function (el) {
return SuspectList.indexOf(el) > -1;
});
for (var i = 0; i < fc.length; i++) {
if (busted.indexOf(fc[i]) > -1) {
fc[i] = "Busted";
}
}
return fc;
}
var suspects = suspectsFnc(fCommunityMembers, SuspectList);