Вы хотите получить элементы разности между existingCompanies
и newCompanies
. Если мое понимание вашего вопроса верно, как насчет этой модификации? Я думаю, что есть несколько решений для вашей ситуации. Поэтому, пожалуйста, подумайте об этом как об одном из них.
Очки модификации:
- В случае, если ваш скрипт изменен, он выбирает элемент из
newCompanies
и проверяет, включен ли он в existingCompanies
.
- Если этот выбранный элемент не включен в
existingCompanies
, элемент помещается в array
. В этой модификации я использовал true
и false
для проверки этого.
Этот поток повторяется до тех пор, пока все элементы в newCompanies
не будут проверены.
Модифицированный скрипт 1:
Когда ваш скрипт изменяется, как насчет этого?
От:
var array = [];
for(i=0; i<newCompanies.length; i++) {
for(j=0; j<existingCompanies.length; j++) {
if(newCompanies[i][0] !== existingCompanies[j][0]) {
array.push([newCompanies[i][0]]);
}
}
}
Для того, чтобы:
var array = [];
for(i=0; i<newCompanies.length; i++) {
var temp = false; // Added
for(j=0; j<existingCompanies.length; j++) {
if(newCompanies[i][0] === existingCompanies[j][0]) { // Modified
temp = true; // Added
break; // Added
}
}
if (!temp) array.push([newCompanies[i][0]]); // Modified
}
Logger.log(array)
Модифицированный скрипт 2:
Как и другие модели, как насчет следующих 2 образцов? Стоимость процесса этих сценариев ниже, чем стоимость сценария, используемого для цикла.
var array = newCompanies.filter(function(e) {return existingCompanies.filter(function(f) {return f[0] == e[0]}).length == 0});
Logger.log(array)
или
var array = newCompanies.filter(function(e) {return !existingCompanies.some(function(f) {return f[0] == e[0]})});
Logger.log(array)
Если я неправильно понял ваш вопрос, пожалуйста, скажите мне. Я хотел бы изменить его.