如何在Google Sheets API中优雅解构二维数组获取表头与数据?
问题:解构Google Sheets API返回的二维数组获取表头与行数据
我正在使用Google Sheets API,需要从返回的二维数组里拆分出表头和行数据——表头是数组的第一个元素(data[0]),剩下的元素都是行数据。试了下面的解构代码,但没法正确把剩余行赋值给rowValues,不想用for循环push的方式实现。
错误代码示例:
var data = [ ["header 1", "header 2", "header 3"], ["data 1.1", "data 1.2", "data 1.3"], ["data 2.1", "data 2.2", "data 2.3"], ["data 3.1", "data 3.2", "data 3.3"], ["data 4.1", "data 4.2", "data 4.3"], ] var [header, ...rowValues] = [data[0], data]
解决方案
你写的代码问题出在右侧的数组构造:[data[0], data]会生成一个新数组,第一个元素是表头,第二个元素是整个原data数组,所以解构后rowValues会变成[data],自然不符合预期。
直接对原data数组做解构就能解决问题,这是最简洁的方式:
var data = [ ["header 1", "header 2", "header 3"], ["data 1.1", "data 1.2", "data 1.3"], ["data 2.1", "data 2.2", "data 2.3"], ["data 3.1", "data 3.2", "data 3.3"], ["data 4.1", "data 4.2", "data 4.3"], ] // 直接解构原data数组 var [header, ...rowValues] = data;
运行后:
header会等于["header 1", "header 2", "header 3"]rowValues会包含原数组从索引1开始的所有元素,也就是4行数据。
如果需要保留原数组的浅拷贝(解构本身不会修改原数组),也可以用扩展运算符配合解构,效果一致:
var [header, ...rowValues] = [...data];
另外还有一种非解构但同样无需循环的方式:
var header = data[0]; var rowValues = data.slice(1);
内容的提问来源于stack exchange,提问作者Shu Pesmerga
相关产品推荐
相关产品推荐

