Javascript 检查数组中是否存在值
我有一个脚本,它查看一张表(“数据”),从一列日期中查找未来3个月的日期,并将这些行复制到另一张表(“3个月”)。它能做到,耶 我还想让它做的是检查“3个月”表中每一行的唯一ID,如果该唯一ID存在,则不要从“数据”中复制该行 它会这样做,但前提是“3个月”中的数据与“数据”中的数据顺序相同,否则不会。显然,它所做的是将当前唯一ID与数组中的等效唯一ID进行匹配。而不是尝试将当前唯一ID与数组中的所有ID进行匹配,并确保它们中的任何一个都不匹配 这就是我所拥有的:Javascript 检查数组中是否存在值,javascript,google-apps-script,Javascript,Google Apps Script,我有一个脚本,它查看一张表(“数据”),从一列日期中查找未来3个月的日期,并将这些行复制到另一张表(“3个月”)。它能做到,耶 我还想让它做的是检查“3个月”表中每一行的唯一ID,如果该唯一ID存在,则不要从“数据”中复制该行 它会这样做,但前提是“3个月”中的数据与“数据”中的数据顺序相同,否则不会。显然,它所做的是将当前唯一ID与数组中的等效唯一ID进行匹配。而不是尝试将当前唯一ID与数组中的所有ID进行匹配,并确保它们中的任何一个都不匹配 这就是我所拥有的: function contra
function contractSearch2() {
//Get all the sheet names as variables
var dataSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data");
var threeMonths = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("3 Months");
//Get all the expiry dates on the data sheet
var lastRow = dataSheet.getLastRow();
var endDates = dataSheet.getRange(1, 11, lastRow).getValues();
//Get today's date
var today = new Date();
// Work out when 3 months from now is.
var threeMonthsOut = new Date(today);
var CurrentDate = new Date();
threeMonthsOut.setMonth(CurrentDate.getMonth() + 3);
// Find months / years that match 3 months out.
var threeMonthslastRow = threeMonths.getLastRow();
var CallOffIDs = threeMonths.getRange(1, 4, threeMonthslastRow+1, 1).getValues();
var test = 0
var j = 0;
//Logger.log(CallOffIDs[1])
for (var i = 0; i < endDates.length; i++){
var fDate = new Date(endDates[i][0]);
// if a date is 3 months in the future
if (fDate.getMonth() == threeMonthsOut.getMonth() &&
fDate.getFullYear() == threeMonthsOut.getFullYear()) {
//get all the row info
var entry = dataSheet.getRange(i+1, 1, 1, 44).getValues();
// Check to see if CallOff ID Exists already
// Get the CallOff ID from the entry row
var CallOffCheck = entry[0][3];
++j;
for ( test in CallOffIDs) {
++test;
if (CallOffCheck == CallOffIDs[j]) {
break;
} else {
var threeMonthslastRow2 = threeMonths.getLastRow();
threeMonths.getRange(threeMonthslastRow2 + 1, 1, 1, 44).setValues(entry);
break;
}
}
}
}
}
函数契约搜索2(){
//将所有工作表名称作为变量获取
var dataSheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“数据”);
var threeMonths=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“3个月”);
//在数据表上填写所有有效期
var lastRow=dataSheet.getLastRow();
var endDates=dataSheet.getRange(1,11,lastRow).getValues();
//得到今天的日期
var today=新日期();
//计算3个月后的时间。
var threeMonthsOut=新日期(今天);
var CurrentDate=新日期();
三个月out.setMonth(CurrentDate.getMonth()+3);
//找出与3个月匹配的月份/年份。
var threeMonthslastRow=threeMonths.getLastRow();
var CallOffIDs=threeMonths.getRange(1,4,threemonthLastRow+1,1).getValues();
var测试=0
var j=0;
//Logger.log(CallOffIDs[1])
对于(变量i=0;i
由于另一个原因,我需要对“3个月”上的行重新排序,“数据”表上的数据总是在更新,因此我需要不断运行脚本。这就是为什么我需要它来检查所有的值
提前感谢。阵列提供四种搜索方式:
-根据是否找到某个项目返回true或false。允许您编写一个函数来进行比较/匹配。此方法在Google Apps脚本中可用someArray.some
-从数组返回一个元素,并允许您编写一个函数来进行比较/匹配。如果存在多个匹配元素,则只返回第一个元素。此方法在Google Apps脚本中不可用someArray.find
-返回数组中元素的索引,并允许您编写函数进行比较/匹配。如果存在多个匹配元素,则只返回第一个元素。此方法在Google Apps脚本中不可用someArray.findIndex
-如果未找到匹配项,则返回-1,否则返回匹配元素的基于0的索引。您必须传递一个要搜索的值,并且还可以传递数组的位置,从该位置到搜索循环。此方法在Google Apps脚本中可用someArray.indexOf
var beats=['ant','bison','camel','duck','bison'];
console.log(beats.indexOf('bison'));
//预期产出:1
//从索引2开始
console.log(beats.indexOf('bison',2));
//预期产出:4
console.log(beats.indexOf('giraffe'));
//预期产出:-1
var foundItem=beats.find(函数(项、arr、索引){
return item==“camel”;//我的函数正在搜索camel
});
console.log(foundItem);
//预期输出:“骆驼”
var foundItemIndex=beats.findIndex(函数(项、arr、索引){
return item==“camel”;//我的函数正在搜索camel
});
log(foundItemIndex);
//预期输出:2
数组提供四种搜索方式:
-根据是否找到某个项目返回true或false。允许您编写一个函数来进行比较/匹配。此方法在Google Apps脚本中可用someArray.some
-从数组返回一个元素,并允许您编写一个函数来进行比较/匹配。如果存在多个匹配元素,则只返回第一个元素。此方法在Google Apps脚本中不可用someArray.find
-返回数组中元素的索引,并允许您编写函数进行比较/匹配。如果存在多个匹配元素,则只返回第一个元素。此方法在Google Apps脚本中不可用someArray.findIndex
-如果未找到匹配项,则返回-1,否则返回匹配元素的基于0的索引。您必须传递一个要搜索的值,并且还可以传递数组的位置,从该位置到搜索循环。此方法在Google Apps脚本中可用someArray.indexOf
var beats=['ant','bison','camel','duck','bison'];
console.log(beats.indexOf('bison'));
//预期产出:1
//从索引2开始
console.log(beats.indexOf('bison',2));
//预期产出:4
console.log(beats.indexOf('g