如何获取JSON键/值对而不是数组

n53p2ov0  于 2023-08-08  发布在  其他
关注(0)|答案(2)|浏览(103)

我需要通过应用程序脚本从谷歌电子表格中检索一些数据,为此我设置了一个DoGet函数。目前我正在检索一个数组,但我需要的数据是JSON键值对格式。
Google Sheets上的表格看起来像这样:


的数据
DoGet函数设置如下:

function doGet(e) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 

  var returnData = sheet.getRange('A1:B2').getValues()

return ContentService.createTextOutput(JSON.stringify(returnData))
}

字符串
我正在检索这个:

[
    ["fruit", "vegetable"],
    ["ABC", "DEF"]
]


我需要像这样检索JSON key:value对:

{
"fruit": "ABC",
"vegetable": "DEF"
}

cotxawn7

cotxawn71#

问题是您正在从Google Sheet中提取值,因此此响应是您的数据在工作表中的表示方式。

[
    ["fruit", "vegetable"],
    ["ABC", "DEF"]
]

字符串
显然,您可以Map数据以获得您想要的响应。

const arrayData = [
    ["fruit", "vegetable"],
    ["ABC", "DEF"]
];

const resultObject = arrayData[0].reduce((acc, key, index) => {
    acc[key] = arrayData[1][index];
    return acc;
}, {});

console.log(resultObject);


但这带来了一个问题,如果有更多行,那么您将如何处理它?

zhte4eai

zhte4eai2#

您可以利用中的Array:sliceArray:map函数来完成预期输出。
参考以下代码:

const nestedArray = [
  ["fruit", "vegetable"],
  ["ABC", "DEF"],
  ["CC", "DDD"],
  ["FF", "GG"],
  ["FF2", "G3G"]
];

function arrTranformer(arr) {
  let transformedArray = arr.slice(1).map(innerArray => {
    let obj = {};
    if (innerArray.length >= 2) {
      obj[arr[0][0]] = innerArray[0];
      obj[arr[0][1]] = innerArray[1];
    }
    return obj;
  });

  return transformedArray;
}

console.log(JSON.stringify(arrTranformer(nestedArray)));

字符串

相关问题