首页 > 解决方案 > 在JS中拆分字符串并更改值

问题描述

我需要帮助来解决这个似乎比我预期的更复杂的问题......

我有一个看起来像这样的数组: [[G113428, 03-35, ], [G114696, 04-17, ], [, , ], [G298962, 05-19, ], [G117633, , ], [G117648, , ], [G119907, 04-40, 03-49], [G119912, 04-38, 03-47], [G119927, 04-41, 03-50], [, , ], [G246909, 05-23, ], [G250157, 04-51, ], [G250249, 05-3, ], [G298982, 04-66, ], [G293310, 04-7, ], [G298997, , ], [G297871, 05-9, ], [G297886, 05-39, ], [G297891, 04-60, ], [G297918, 04-61, ], [G297923, 05-1, ], [G297938, 05-2, ], [G297943, 04-48, ], [G297963, 04-52, ], [G297978, 03-59, ], [G297983, 03-60, ], [G201069, 04-6, ], [G201094, 04-5, 04-5], [G201126, 04-4, ], [G201203, 05-5, ], [G299008, 04-24, ], [G206967, 04-22, ]]

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

例如,正如您在上面几个数组的第二个位置的数组中看到的那样,我们有这样的:04-17, 04-66, 04-61, 04-6... 我要做的就是根据第二个值更改这些值。所以它应该是这样的:

04-604-1

04-1704-2

04-6104-3

04-6604-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)

}

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

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


如果这是你需要的,我想知道,但我想出了那个解决方案:

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) => {
    if(i > 0) {
        let val = v ? v.split("-")[0] + "-" : ""
        let index = max[val] ?? 1
        max[val] = index + 1
        return val + index
    }
    return v
}))

console.log(newArr)
.as-console-wrapper { max-height: 100% !important; top: 0; }


推荐阅读