如何在单行代码中完成数组初始化及splice修改操作?
问题原因
splice 是数组的原地修改方法,执行后会直接修改调用它的原数组,返回值为被删除的元素组成的新数组,因此你直接链式调用时,赋值给data的是被删除的行内容,而非修改后的原数组。
单行实现方案
方案1:使用slice实现(最推荐)
无需强行使用splice,slice方法完全适配你的需求:它会返回从指定下标到数组末尾的新数组,不会修改原数组,代码简洁无额外变量:
let data = tgSh.getDataRange().getValues().slice(headers.getRow());
方案2:必须使用splice的实现
如果业务逻辑要求必须使用splice操作,可以通过立即执行函数包裹逻辑实现单行,不会污染外部作用域:
let data = (() => { const arr = tgSh.getDataRange().getValues(); arr.splice(0, headers.getRow()); return arr; })();
也可以用逗号运算符实现(严格模式下需提前声明临时变量):
let data, temp; data = (temp = tgSh.getDataRange().getValues(), temp.splice(0, headers.getRow()), temp);
内容的提问来源于stack exchange,提问作者Chris Barrett
相关产品推荐
相关产品推荐

