I s*_*ame 1 javascript arrays object google-apps-script
如果我有2个数组(properties和data):
properties = [name, height, weight, zone];
data = [
['Luke Skywalker', 123, 112, 'B'],
['Jawa', 12, 8, 'B'],
['Hutt', 200, 999, 'C']
];
Run Code Online (Sandbox Code Playgroud)
并且我想创建一个对象数组(statistics):
statistics = [{
name: 'Luke Skywalker',
height: 123,
weight: 112,
zone: 'B'
},
{
name: 'Jawa',
height: 12,
weight: 8,
zone: 'B'
}, {
name: 'Hutt',
height: 200,
weight: 999,
zone: 'C'
}
];
Run Code Online (Sandbox Code Playgroud)
通常,我只会使用map over data[],创建一个temp对象,然后将其推入statistics[]。
但是由于我知道所有其他条目data都具有相同的维度和数据类型。我也知道从properties到一对一的映射data。javascript中是否有内置函数,该函数以一对一映射输出对象数组?相似properties.mapAll(data)或相似的东西。我希望不使用库,因为我是.html在GAS中的模板上执行此操作的。
如果属性总是会name,height,weight和zone那么你可以使用数组解构申请一个占位符名称和内存储的值给它map。
const data = [['Luke Skywalker', 123, 112, 'B'], ['Jawa', 12, 8, 'B'], ['Hutt', 200, 999, 'C']];
const stats = data.map(([name, height, weight, zone]) => ({
name,
height,
weight,
zone
}))
console.log(stats)Run Code Online (Sandbox Code Playgroud)
编辑基于GAS上的脚本。这是相同的方法,但es5。
var data = [['Luke Skywalker', 123, 112, 'B'], ['Jawa', 12, 8, 'B'], ['Hutt', 200, 999, 'C']];
var stats = data.map(function(dataArray) {
return {
name: dataArray[0],
height: dataArray[1],
weight: dataArray[2],
zone: dataArray[3]
}
})
console.log(stats)Run Code Online (Sandbox Code Playgroud)