使用练习来建立我的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中放置最小数字的方法是正确的。
非常感谢任何帮助。谢谢。
答案 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)