2016-11-24 63 views
0

我得到了这个任务,我无法得到如何用字符串“BUSTED”替换匹配,请你帮助我。我是JS新手。很可能有一种更优雅的方式来做到这一点。任何帮助赞赏。JavaScript替换数组的匹配成员与其他数组的比较

给出了两个数组:一个持有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); 

回答

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);

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"; 
}); 
+0

是方式更优雅挑选匹配的成员,谢谢。如何用CommunityMembers数组中的字符串“BUSTED”替换这些常见成员? – KathyBlue

+1

@KathyBlue:刚才回答 –

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);