在示例脚本中,我生成了两个我希望组合成一行的数组:
var testHeaders = ["aLabel", "bLabel", "cLabel","dLabel","eLabel"];
和
var testValue = ["aValue","bValue", "cValue","dValue","eValue"];
我想要实现的是像{ aLabel = aValue, bLabel = bValue, ... }
这样的字符串,可以用来上传到BigQuery(数据上传工作)。
我找到了一段几乎可以做到这一点的代码,但不知怎的,它改变了两个数组中元素的顺序。
var code = testValue.reduce(function(obj, value, index) {
obj[testHeaders[index]] = value;
return obj
}, {})
然而,结果确实混淆了数组的顺序,如下所示。我无法弄清楚订单改变的原因。据我所知,reduce()
应该在数组中从左到右工作。
返回的对象是:
{
aLabel = aValue,
dLabel = dValue,
bLabel = bValue,
eLabel = eValue,
cLabel = cValue
}
答案 0 :(得分:2)
您可以使用地图和加入:
var testHeaders = ["aLabel", "bLabel", "cLabel","dLabel","eLabel"];
var testValue = ["aValue","bValue", "cValue","dValue","eValue"];
var res = '{' + testHeaders.map((label, i) => `${label}=${testValue[i]}`).join(',') + '}';
console.log(res);
答案 1 :(得分:-1)
正如vlaz指出的那样,你既不创建字符串,也不创建新数组,而是创建一个对象。就像地图一样,对象在JavaScript中没有设定的键顺序。因此,很有可能在对象中获得另一个订单而不是两个数组。