【问题标题】:Sorting javascript array foreach对 javascript 数组 foreach 进行排序
【发布时间】:2018-06-05 15:24:14
【问题描述】:

我是编程新手。有人能解释一下这个函数是如何排序整数数组的吗?它似乎正在对数组进行排序。这里创建数组“d”的目的是什么?

function asc(f) {

  var d = [];
  f.map(function(e, i, a) {
    d[i] = e
  })
  var k = [];
  f.forEach(function(e, i, a) {
    var g = d.indexOf(Math.min.apply(null, d))
    var s = d.splice(g, 1)
    k[i] = s
  })

  document.write(k)
}
asc([3, 4, 1, 2, -3, 20, 10, 22, 7, 5, 7, 8, 200, 6])

【问题讨论】:

  • 它正在创建一个空数组,然后用 .map 函数中的值填充该数组。本质上,它是在创建输入数组 f 的副本。
  • 为了更好地学习,在 map 函数、foreach 等函数中打印数据。您可以看到数据是如何转换的,并更好地理解它们的用途。

标签: javascript arrays sorting foreach integer


【解决方案1】:

数组d 是原始数组的精确副本。 代码使用此副本是因为有意删除每次迭代中的最小元素并将其存储在新的 k 数组中,该数组是最终排序的数组。我在代码中制作了 cmets 来向您展示每一行的作用。

function asc(f) {
  //f is the original array
  var d = [];
  f.map(function(e, i, a) {
    d[i] = e
  })// create d as an exact copy of f
  
  var k = []; // the final sorted array
  f.forEach(function(e, i, a) {
    var g = d.indexOf(Math.min.apply(null, d)) // get the position of the minimum element of d
    var s = d.splice(g, 1) // remove the minimum element from d and store it in s
    k[i] = s // put s in the k array
  })

  document.write(k) // write the sorted array in document
}
asc([3, 4, 1, 2, -3, 20, 10, 22, 7, 5, 7, 8, 200, 6])

当然有更好的方法使用内置的sort 函数对数组进行排序。

[3, 4, 1, 2, -3, 20, 10, 22, 7, 5, 7, 8, 200, 6].sort(function(a,b){
  return a-b  
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-15
    • 2022-06-17
    • 2021-12-13
    • 2011-10-23
    • 2020-05-30
    • 2022-01-18
    相关资源
    最近更新 更多