Javascript 在JS中拆分字符串并更改值

Javascript 在JS中拆分字符串并更改值,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我需要帮助来解决这个问题,这个问题似乎比我想象的要复杂 我有一个如下所示的数组: [G1298962,05-23,,[G29699,05-23,05-23,,[G24699,05-23,,[G250157,04-157,04-51,,,[G117633,,[G117633,,[G117633,[G117617633,,[G117617633,[G117617617633,[G117617633,[G117633,,[G117633,,,,,,[G117633,,[G117633,,,,,,[G1

我需要帮助来解决这个问题,这个问题似乎比我想象的要复杂

我有一个如下所示的数组: [G1298962,05-23,,[G29699,05-23,05-23,,[G24699,05-23,,[G250157,04-157,04-51,,,[G117633,,[G117633,,[G117633,[G117617633,,[G117617633,[G117617617633,[G117617633,[G117633,,[G117633,,,,,,[G117633,,[G117633,,,,,,[G117633,,,[G117633,,,,,,,[G117633,,,,,,[[G117633,[G117633,,,,,[G117633,,[G117633,,[[G117633,,[[[[[[[[G11763329292929298962,5-62,5-5-5-5-20,05-20,05-20,05-23,05-23,05-23 G297891,04-60,],[G297918,04-61,],[G297923,05-1,],[G297938,05-2,],[G297943,04-48,],[G297963,04-52,],[G2979778,03-59,],[G297983,03-60,],[G2201069,04-6,]

每个数组有3个元素,在某些情况下,也有空元素。 我需要更改每个数组的第二个和第三个元素

例如,您可以在上面的数组中看到 在少数数组的第二个位置,我们有这样一个:
04-17、04-66、04-61、04-6…
我只想根据第二个值更改这些值。 所以它应该是这样的:

04-6
➔ <代码>04-1

04-17
➔ <代码>04-2

04-61
➔ <代码>04-3

04-66
➔ <代码>04-4

我不知道怎样才能解决。。。。我试着把第一部分,第二部分和第三部分分开,但结果不太好。。。 这是到目前为止我的代码,但我认为它对您没有任何用处,因为它返回原始数组

function myFunction() {
  
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var sheet=ss.getSheetByName("Sheet1");
  var range = sheet.getRange(2,11,sheet.getLastRow(),3);
  var values = range.getValues();

  //Logger.log(values)

  function splitV(arr){
    var nowa = [];
    for(var i = 0; i < arr.length; i++){
     arr[i][1].split("-")
    }
    return arr;
  }

const splited = splitV(values)
 Logger.log(splited)

}
函数myFunction(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getSheetByName(“Sheet1”);
var range=sheet.getRange(2,11,sheet.getLastRow(),3);
var values=range.getValues();
//Logger.log(值)
功能拆分V(arr){
var nowa=[];
对于(变量i=0;i

如果有人能帮助我,我将不胜感激。

idk如果这是您需要的,但我已经想出了解决方案:

arrayOfArrays.forEach((array) => {
    // do whatever you want with the second item
    // array[1] = 'whatever';
});
arr=[[“a”、“04-12”、“04-4”]、[“b”、“04-3”、“02-5”]、[“c”、null、“02-3”]、[“d”、null、null]
max={}
const newArr=arr.map(group=>group.map((v,i)=>{
如果(i>0){
设val=v?v.split(“-”[0]+“-”:“”
设指数=最大值[val]??1
max[val]=索引+1
返回值+索引
}
返回v
}))
console.log(newArr)

.as console wrapper{max height:100%!important;top:0;}
您可以使用一个函数来获取相同组的递增数

在这些方面,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[G298997',],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,05-5',['G299008','04-24',],[G206967','04-22',], 过程=功能(h){ 返回函数{ 如果(s==未定义),则返回s; s=s.split('-',1)[0]; 返回[s,h[s]=(h[s]| | 0)+1]。加入('-'); }; }({}); result=data.map(函数(a){返回[a[0],进程(a[1]),进程(a[2])];}); console.log(结果);

.as console wrapper{max height:100%!important;top:0;}
由于您也希望对数据进行排序,因此可以执行以下操作:

函数myFunction(){
常量值=[/*值*/]
//按secod元素排序,结尾为null和空单元格
value.sort((rowA,rowB)=>{
常数a=rowA[1]
常数b=行b[1]
如果(a==b)返回0
如果(a===null | | a==='')返回1
如果(b===null | | b==='')返回-1
返回a.localeCompare(b)
})
//按规定重置计数
让我们一起来,我
for(让一行值){
如果(第[1]行){
常量组=行[1]。拆分('-',2)[0]
如果(组!==当前组){
当前组=组
i=1
}
行[1]=`${currentGroup}-${i}`
我++
}
}
//使用“值”
}

在本示例末尾,对值进行排序,第二个元素已按规定更改其值。

第一个
04-X
->
04-1
,第二个
04-X
->
04-2
,…第一个
05-X
->
05-1
,第二个
05-X
->
05-2
,…?或者有更多的逻辑发票lved?@Andreas不,没有更多的逻辑。只需要对第一个值进行排序,然后输入新的数字。内部数组的第三个元素是什么?@NinaScholz很抱歉!第三个元素看起来和第二个元素一样“我认为它对你没有任何用处”-是的,因为函数因引用错误而无法工作。请使用实际数据进行此操作。首先生成测试输入数据不应该是我们的工作。我不知道,但我在
const newArr=arr.map(group=>group.map((v,I)=>{
如果我运行代码段,一切正常,你的数组名为
arr
?代码段上的数组工作正常…是因为谷歌的工作表吗?是的,我的数组名为
arr
。当我将
操作符更改为
|
时,它开始工作。我不确定,但谷歌电子表格似乎不识别这个空值ish coalescing操作符(??)我不知道,但我在这一行
pro中再次遇到语法错误