将键添加到数组,然后合并(是否有更好的方法?)

时间:2019-05-09 19:29:20

标签: javascript arrays

我目前有两个从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"}]

有更好的方法吗?

3 个答案:

答案 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);