我目前有两个从API接收到的数组,如下所示:
else
我想向他们添加密钥,所以它们看起来像这样:
string c = LINQPad.Util.CurrentDataContext.Connection.ConnectionString;
然后将它们组合为:
["Array1", "Array1", "Array1"]
["Array2", "Array2", "Array2"]
我想我已经用这段代码得到了想要的东西:
[{date: "Array1"}, {date: "Array1"}, {date: "Array1"}]
[{data: "Array2"}, {data: "Array2"}, {data: "Array2"}]
有更好的方法吗?
答案 0 :(得分:3)
您可以映射Array1
以获得date
,并按索引从data
中获取Array2
:
var Array1 = ["Array1", "Array1", "Array1"];
var Array2 = ["Array2", "Array2", "Array2"];
var combined = Array1.map((date, i) => ({
date,
data: Array2[i]
}))
console.log(combined)
答案 1 :(得分:1)
您可以在array.map中执行组合。
The documentation for Array.prototype.map()注意以下语法:
var new_array = arr.map(function callback(currentValue[, index[, array]]) {
// Return element for new_array
}[, thisArg])
请注意,回调函数不仅可以采用当前值,还可以采用索引(和数组,但不需要)。您可以使用它来将组合压缩为以下内容:
Array1.map((elem, i) => ({ date: elem, data: Array2[i] }));
答案 2 :(得分:1)
您可以采用动态方法为键设置数组,并通过从结果集或新对象中获取值来分配新属性。
var data1 = ["Array1", "Array1", "Array1"],
data2 = ["Array2", "Array2", "Array2"],
keys = ["date", "data"],
result = [data1, data2]
.reduce((r, b, i) => b.map((v, j) => Object.assign(r[j] || {}, { [keys[i]]: v })), []);
console.log(result);