javascript - 不理解使用 each 和 map 的循环

标签 javascript arrays

我知道每个和映射都有 native 函数(我认为),但我们正在学习幕后发生的事情。所以检查一下..

var sampleInput = [ 
  [1, 3, 2], 
  [4, 23, 100],
  [7, 6, 3, -2]
];

function eachNew(coll, f) {
  if (Array.isArray(coll)) {
    for (var i = 0; i < coll.length; i++) {
      f(coll[i], i);
    }
  } else {
    for (var key in coll) {
      f(coll[key], key);
    }
  }
}

function map(array, f) {
  var acc = [];
  eachNew(array, function(element, i) {
    acc.push(f(element, i));
  });
  return acc;
}
function max(array) {
    var largest = 0;
    eachNew(array, function(m){
        if (largest < m) { 
            largest = m};
    });
    return largest;
}

所以我想写一个函数maximums,它输出一个数组,每个数组中都有最大数所以[3, 100, 7]

我不知道怎么写。这是我的猜测..

function maximum(array) {
    var array = [];{
    return map(array, max(array))
    };
    return array.push(max);
}

这看起来不是一个很好的猜测,但我一直在尝试! 请帮忙,谢谢 :)

最佳答案

你实际上就在那里,只是让它有点复杂。请记住,根据您的规范, map 将 function 作为第二个参数。此函数将应用于作为第一个参数传递的数组。所以你只需要使用你开发的两种成分。因此,maximum 变得相当简单:

function maximum(array) {
    return map(array, max);
}

var numbers = maximum(sampleInput);

console.log(numbers);

您似乎是在为学校做这件事,所以在评论中,我希望您能告诉我们为什么上述方法有效。而且,您尝试将 max(array) 作为第二个参数传递给 map 有什么问题。 ;)

关于javascript - 不理解使用 each 和 map 的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39902773/

相关文章:

javascript - jQuery 提取带有添加字符的跨度文本

java - 如何在 Java 中对字符串数组(以名称与数字连接的形式)进行排序?

c - C中小写到大写

javascript - 从我的 jQuery 插件中移除延迟

c - 具有包含可变大小对象的结构的 Malloc

c# - 如何从列表中删除特定的游戏对象(在数组中)?

c++ - 二维数组中的指针运算

javascript - 将对象拖出 IFrame

javascript - Vue.js 使用计算属性来显示或隐藏组件的一部分

javascript - 解析 Javascript 函数中的多个对象