获取数字数组并返回索引0中最小#和索引1中最大#的新函数的函数

时间:2015-08-17 20:27:39

标签: javascript arrays algorithm

使用练习来建立我的Javascript数组技能。

问题如下:编写一个函数largest_smallest,它将一个数字数组作为输入,使用.forEach(),并返回一个数组,其中包含第零个位置中的最小数字和第一个中的最大数字位置。

我没有使用forEach(),而是想到这样做的唯一方法如下:

var array_of_nums = [7, 8, 120, 60, 10]

function biggest_smallest(array){
  var new_array = []
  for (var i = 0; i < array.length; i++){
    if (array[i] === Math.min.apply(Math, array)){
      new_array.unshift(array[i])
    } else if (array[i] === Math.max.apply(Math, array)) { ? }
  }
  return new_array
}

我无法弄清楚如何在索引1中放置最大数字(更不用说使用forEach()方法重构它)来完成这个练习。我假设我在索引0中放置最小数字的方法是正确的。

非常感谢任何帮助。谢谢。

4 个答案:

答案 0 :(得分:3)

假设这应该或多或少像d3.extent那样工作,我认为最简单的选择就是通过Row rowA = new Row.UpdateRowBuilder().setCells(cellsB).setRowId(rowId).build(); List<Row> updatedRows = smartsheet.sheetResources().rowResources().updateRows(sheetId, Arrays.asList(rowA)); Math.min检查进行迭代:

Math.max

下划线的function smallest_biggest(arr) { // ditch if no input if (!array.length) return []; // start with comparable values var extent = [Infinity, -Infinity]; arr.forEach(function(val) { extent[0] = Math.min(extent[0], val); extent[1] = Math.max(extent[1], val); }); return extent; } _.min函数用于跳过第一次检查,结果令人难以置信的烦恼_.max

答案 1 :(得分:1)

编辑我的错误,问题需要forEach次迭代,所以我认为 需要

确实不需要迭代,您只需使用Math.min / Math.max

function biggest_smallest(array){
   return [Math.min.apply(null, array), Math.max.apply(null, array)];
}

答案 2 :(得分:0)

我首先说你需要找到两个变量:a(数组中的最小值)和b(最大值)。然后,在循环外部(您可以使用foreach或常规语法实现),只需将两个值推送到结果数组:

Debug>Windows>Modules>[Right click...]>Load Symbol Information

答案 3 :(得分:0)

var array_of_nums = [7, 8, 120, 60, 10]

function smallest_biggest(arr) {
    var new_array = []
    arr.forEach(function() {
        new_array[0] = Math.min.apply(Math, arr)
        new_array[1] = Math.max.apply(Math, arr)
    })
    return new_array
}
smallest_biggest(array_of_nums)