【问题标题】:Adding elements from each sub array in a 2D array in Javascript在Javascript中将每个子数组中的元素添加到二维数组中
【发布时间】:2021-03-23 06:58:57
【问题描述】:

所以我有这个二维排列的整数数组,看起来像这样:

arr = [
  [ 5, 2, 6 ],
  [ 2, 5, 6 ],
  [ 6, 5, 2 ],
  [ 5, 6, 2 ],
  [ 2, 6, 5 ],
  [ 6, 2, 5 ]
]

本质上,我希望能够获得一个看起来像这样的 字符串 '652,625,562,526,256'

这意味着数字是有序的并且是字符串格式的。

到目前为止我所做的是:

arr.map(c => c.join("")).join()

将它组合成一个数组,但是现在我的想法是将其转换为一个整数数组,然后排序并重新解析为字符串,但是必须有某种更简单的方法来做到这一点?

我对 JavaScript 还很陌生,因此非常感谢任何帮助。

【问题讨论】:

    标签: javascript arrays string parsing multidimensional-array


    【解决方案1】:

    不要立即进行第二次连接 - 而是先对连接的字符串数组进行排序,然后加入:

    const arr = [
      [ 5, 2, 6 ],
      [ 2, 5, 6 ],
      [ 6, 5, 2 ],
      [ 5, 6, 2 ],
      [ 2, 6, 5 ],
      [ 6, 2, 5 ]
    ];
    
    const result = arr
      .map(subarr => subarr.join(''))
      .sort((a, b) => b.localeCompare(a, undefined, { numeric: true }))
      .join();
    console.log(result);

    或映射到数字并在比较器中减去:

    const arr = [
      [ 5, 2, 6 ],
      [ 2, 5, 6 ],
      [ 6, 5, 2 ],
      [ 5, 6, 2 ],
      [ 2, 6, 5 ],
      [ 6, 2, 5 ]
    ];
    
    const result = arr
      .map(subarr => Number(subarr.join('')))
      .sort((a, b) => b - a)
      .join();
    console.log(result);

    【讨论】:

    • 谢谢,这正是我所需要的!我不知道你可以比较字符串值并且必须将它们转换为 int
    • 虽然我认为保留它更简洁,但请注意我们可以跳过第二个示例中的 Number 构造函数。减法无论如何都会将字符串强制转换为数字。
    猜你喜欢
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    • 2012-08-19
    • 2020-10-21
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    相关资源
    最近更新 更多