首页 > 解决方案 > 加入前两个元素并创建新数组?

问题描述

在玩了几个小时的join()andslice()函数之后,我发现你不能在复杂的数组上使用任何一个函数。所以我来这里寻求帮助。

我正在尝试获取以下数据:

 var data = [
            ["North", "Tennis",37, 25, 11, 9, 42, 13],
            ["East", "Football", 41, 2, 3, 26, 47, 21],
            ["South", "Rugby", 7, 22, 35, 45, 11, 46],
            ["West", "Rugby", 30, 21, 44, 23, 4, 47],
            ["North East", "Football", 35, 27, 12, 39, 34, 13],
            ["North West", "Football", 23, 4, 41, 35, 9, 47]
        ];

看起来像这样(输出):

var result = [
    ["North: Tennis", 37, 25, 11, 9, 42, 13],
    ["East: Football", 41, 2, 3, 26, 47, 21],
    ["South: Rugby", 7, 22, 35, 45, 11, 46],
    ["West: Rugby", 30, 21, 44, 23, 4, 47],
    ["North East: Football", 35, 27, 12, 39, 34, 13],
    ["North West: Football", 23, 4, 41, 35, 9, 47]
];

任何帮助,将不胜感激

标签: javascriptarraysmultidimensional-array

解决方案


当您想将一个数组转换为另一个数组时,.map通过获取每个子数组的前两个元素并将它们连接在一起,然后通过添加其余元素(我们在数组解构期间使用 rest 参数获取)到包含连接字符串的新数组。

let data = [
  ["North", "Tennis",37, 25, 11, 9, 42, 13],
  ["East", "Football", 41, 2, 3, 26, 47, 21],
  ["South", "Rugby", 7, 22, 35, 45, 11, 46],
  ["West", "Rugby", 30, 21, 44, 23, 4, 47],
  ["North East", "Football", 35, 27, 12, 39, 34, 13],
  ["North West", "Football", 23, 4, 41, 35, 9, 47]
];

let result = data.map(([s1, s2, ...rest]) => [`${s1}: ${s2}`, ...rest]);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

参考:


推荐阅读