在应用程序脚本中的数组中,在正则表达式匹配后插入特定索引处的元素



我有一个代码块,它正在创建一个数组,我正在使用正则表达式搜索某些文本,如果找到,我将删除该元素并在其位置插入两个新元素,代码如下:

var Unique_items = ["P name1-Test based fee-200 Samples", "P name2-night fee-GG", "P name2-day light test-HH" ];
for (var i in Unique_items){
var temp_index = [];
var check_test_based_fee = new RegExp(/Test based fee/).test(Unique_items[i]); 
if (check_test_based_fee==true){
temp_index.push(i);
temp_index.push(i+1);

Unique_items.splice(temp_index[0],"P name1-TBF-200 Samples:commitment");
Unique_items.splice(temp_index[1],"P name1-TBF-200 Samples:Excess");
}
}
Logger.log(Unique_items);

因此,无论何时Test based fee出现在任何元素中,它都应该用两个新元素替换它,因为这里的Unique_items

["P name1-TBF-200 Samples:commitment", "P name1-TBF-200 Samples:Excess","P name2-night fee-GG", "P name2-day light test-HH"]

我不知道如何动态地准备和插入

P name1-TBF-200 Samples:commitment", P name1-TBF-200 Samples:Excess

请帮忙!

我相信你的目标是这样的。

  • 您希望使用var Unique_items = ["P name1-Test based fee-200 Samples", "P name2-night fee-GG", "P name2-day light test-HH"];"P name1-TBF-200 Samples:commitment""P name1-TBF-200 Samples:Excess"实现以下转换。

    ["P name1-TBF-200 Samples:commitment", "P name1-TBF-200 Samples:Excess","P name2-night fee-GG", "P name2-day light test-HH"]
    

修改点:

  • 在您的脚本中,需要修改splicesplice的参数为splice(start, deleteCount, item1, item2, itemN)
  • 如果Unique_items中包含2个元素,则改变i的索引。需要考虑这种情况。

当这些要点反映在您的脚本中时,如何进行以下修改?

修改脚本:

var Unique_items = ["P name1-Test based fee-200 Samples", "P name2-night fee-GG", "P name2-day light test-HH"];
for (var i in Unique_items) {
var check_test_based_fee = Unique_items[i].includes("Test based fee");
if (check_test_based_fee == true) {
Unique_items.splice(i, 1, ["P name1-TBF-200 Samples:commitment", "P name1-TBF-200 Samples:Excess"]);
}
}
Unique_items = Unique_items.flat();
console.log(Unique_items);

注意:

  • 在这种情况下,可以使用以下示例脚本:

var Unique_items = ["P name1-Test based fee-200 Samples", "P name2-night fee-GG", "P name2-day light test-HH"];
var res = Unique_items.reduceRight((ar, e) => [...ar, ...(e.includes("Test based fee") ? ["P name1-TBF-200 Samples:Excess", "P name1-TBF-200 Samples:commitment"] : [e])], []).reverse();
console.log(res)

参考:

  • 拼接()

最新更新