我有两个排列的电子邮件地址,我试图找出两者的区别。其中一个数组包含当前电子邮件地址。另一个包含当前组成员的电子邮件地址。我正在用当前的电子邮件地址更新组列表,并删除不在当前电子邮件地址中的组中的地址。我无法思考如何让我的for循环来完成这个任务。到目前为止我的密码是..。
for(i = 0; i < GROUP_USERS.length; i++){
var currentMember = GROUP_USERS[i];
for(x = 0; x < DOMAIN_USERS.length; x++){
if(DOMAIN_USERS[x] != currentMember){
continue;
} else {
}
}看来我需要测试我的循环结束了什么的。
编辑
我正在使用Google脚本(SDK)。我将不得不将所有需要删除的电子邮件推送到一个数组中,然后使用GroupApps类从组中删除这些电子邮件。然后,我将需要将尚未驻留在组中的DOMAIN_USERS电子邮件地址推到组中。因此,基本上,我将有两个数组。一组需要从组中删除的电子邮件和一组需要添加到组中的电子邮件。希望这更有意义。
发布于 2015-04-03 12:32:34
您需要创建另一个变量来检查currentMember是否存在于DOMAIN_USERS数组中,然后可以从GROUP_USERS数组中删除它。
for (i = 0; i < GROUP_USERS.length; i++) {
var currentMember = GROUP_USERS[i];
var isContain = false;
for (x = 0; x < DOMAIN_USERS.length; x++) {
if (DOMAIN_USERS[x] == currentMember) {
isContain = true;
}
}
if (!isContain) {
emailTobeRemove.pop(currentMember);
i--;
}
}发布于 2015-04-03 12:55:11
除非我误解了逻辑,否则同样的结果可以用
GROUP_USERS = DOMAIN_USERS;发布于 2015-04-03 12:53:22
如果我正确地理解了您想要从GROUP_USERS中删除不在DOMAIN_USERS中的所有电子邮件地址,那么将DOMAIN_USERS中没有在GROUP_USERS中的电子邮件地址添加到GROUP_USERS数组中,对吗?
您可以首先创建一个“contains”函数(为了便于压缩,您可以使用它而不是indexOf()):
function contains(arr, val) {
for (var i = 0; i < arr.length; i++) {
if (arr[i] === val) {
return true;
}
}
return false;
}然后从GROUP_USERS中删除不在DOMAIN_USERS中的所有电子邮件地址。在for循环中:
for(i=0;i < GROUP_USERS.length; i++) {
if(!contains(DOMAIN_USERS, GROUP_USERS[i])) {
GROUP_USERS.splice(i, 1);
}
}然后,另一个for-循环将从DOMAIN_USERS添加到GROUP_USERS:
for(i=0; i < DOMAIN_USERS.length; i++) {
if(!contains(GROUP_USERS, DOMAIN_USERS[i])) {
GROUP_USERS.push(DOMAIN_USERS[i]);
}
}https://stackoverflow.com/questions/29432148
复制相似问题