【问题标题】:JS return 1st element of 2d array sortedJS返回已排序的二维数组的第一个元素
【发布时间】:2021-08-25 07:49:40
【问题描述】:

我有以下二维数组:[["fox", "100"], ["the", "1"], ["quick", "50"]]

并且只想存储数组的第一个元素,但根据第二个值排序。

所需输出:the,quick,fox

我已经编写了一个循环来迭代似乎可以工作的第一个元素,但是我无法根据第二个值对其进行排序:

for (var i = 0; i < inputArr.length; i++) {
  x1 += inputArr[i][0];
  if(i != inputArr.length - 1){ 
   x1 = x1 + ",";
  }
 }

  
Write(x1); //outputs -> fox,the,quick

【问题讨论】:

  • 我的天真尝试是inputArr.sort((a,b) =&gt; a[1]-b[1]).map(([a]) =&gt; a).flat().join(',') - 虽然可能不需要平面...

标签: javascript arrays loops sorting


【解决方案1】:

您可以使用数组的sort 函数。 sort 函数采用具有 2 个输入的 lambda 函数,根据返回值决定顺序

let arr = [["fox", "100"], ["the", "1"], ["quick", "50"]];

let output= arr.sort((a,b) => a[1]-b[1]).map(e => e[0]).join(",");

【讨论】:

  • 每当我看到"5" - "1" 时,总是让我震惊。在使用 js 编号进行数学运算之前,我总是使用 Number()+。请注意:"5" + "1" = "51""5"-"1" = 4
  • 请注意sort 操作源数组。意思是arr 也将被排序。这可能是可取的,也可能不是可取的。如果没有,sliceconcat 是在排序前进行复制的简单方法。
猜你喜欢
  • 2023-03-18
  • 1970-01-01
  • 2021-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-04
  • 1970-01-01
相关资源
最近更新 更多