我是一名新的JavaScript用户,但我的任务是为我的社区创建一个电子表格,看起来我遇到了麻烦。我一直在使用Google Scripts和Google表格(所以我的社区也可以看到这些信息)。
基本上我有两个阵列,都填充了玩家列表。
我的第一个数组中填充了一系列活跃玩家,这些玩家每隔一天就会更改一次。有些人放弃,有些人被添加,有些人留在名单上。
我的第二个数组用于跟踪每个人,因此它包含所有以前成员的列表。
我的问题: 假设我的第二个数组包含值“Player1”,“Player2”和“Player3”,我的第一个数组包含值“Player1”,“Player2”和“Player3”。
现在考虑第一个数组中的更改,可能是Player1被删除,并且添加了Player 4(按随机顺序),其中第二个数组包含“Player1”,“Player2”和“Player3”,但是我的第一个数组包含值“Player4”,“Player2”和“Player3”。我想要一个比较两个数组(以任何顺序)的东西,并返回第一个数组和第二个数组之间的差异,然后将它们添加到第二个数组。
IE:
数组1 - 活动成员= Player1,Player2,Player3,Player6,Player9,Player4
数组2 - 总成员= Player1,Player2,Player3,Player4,Player6,Player9
会返回NO差异,但
阵列1 - 活跃成员= Player1,Player4,Player3
数组2 - 总成员= Player2,Player3
将返回Player1和Player4,然后将它们添加到数组2以生成数组2:
Player2,Player3,PLAYER1,Player4
我知道这真的令人困惑,但我无法理解如何让它发挥作用!
这是一些伪代码来演示我想要的东西:
if Array1[x] is found in Array2
ignore
but
if Array1[x] is not found in Array2
add the value of [x] to the end of Array2
我正在使用Google脚本为Google电子表格中的电子表格编码,这是我的代码的基本概要:
for (var i=0;i<=range.length;i++){
var playerName = sheetWAR.getRange(i+4,4).getValue(); // first 3 rows are for information
}
其中range是一个值,我插入了Browser.inputBox命令。
然后我将这些数据粘贴到另一张纸上:
for (var j=0;j<=playerName.length;j++){
sheetRANK.getRange(j+2,3).setValue(playerName[j]);
}
好,现在我想拿这些值并将它们与列表进行比较(默认为空!
var maxRow = sheetRANK.getLastRow();
for (var k=0; k<=maxRow; k++){
var activeRange = sheetRANK.getRange(k,1).getValue();
}
activeRange = Array2
playerNumber = Array1
我已经尝试了下面的两个建议,接下来会发生什么:
If I have these values for each array:
activeRange = {"Viper", "Cobra", "Diamondback", "Python"}
and
playerName = {"Viper", "Cobra", "Anaconda", "Diamondback", "Python"}
resulting activeRange = {"Viper", "Cobra", "Diamondback", "Python", "", "", "Anaconda", "undefined"}
for both of the posted solutions.
我没有意识到我已将playerName上面的1复制到数组中,因此for循环中的一个简单的playerName.length-1解决了这个问题,另一个问题是在编译列表中出现了一个空格:这个可能是新到JavaScript错误的最好证明。我只是忘了我使用lastRow作为长度,所以如果我在activeRange(array2)中的值少于在playerNum(array1)中的值,它将向下复制到array1中的最后一行,这将是array2中的空白区域,然后一旦将这两个数组一起编译,其中array2在array1之前,空格就会将两者分开。
答案 0 :(得分:0)
希望这有帮助:
var arr1 = ["Player1", "Player4", "Player3"];
var arr2 = ["Player2", "Player3"];
arr1.forEach(function(player) {
if(arr2.indexOf(player) == -1) arr2.push(player);
});
console.log(arr2);
// ["Player2", "Player3", "Player1", "Player4"]