繁体   English   中英

我正在尝试获取一个 javascript 函数,它将通过使用回调方法返回一个新数组,并将一个数组和两个回调作为 arg

[英]I'm trying to get a javascript function that will return a new array by using callback method and takes a array and two callbacks as arg

我想要一个函数来接受两个回调并仅在两个回调都为真时才返回结果:

let myMap = function(array, cb1, cb2) {
  let result = []
  for (let i = 0; i < array.length; i++) {
    let test = cb1(array[i]) && cb2(array[i])
    result.push(test)
  }

  return result
}

期望的行为:

let triple = function (n) {
    return 3 * n;
};

let half = function (n) {
    return n / 2;
};
console.log(myMap([7, 3, 2, 9, 8], triple, half));
// [ 21, 1.5, 6, 4.5, 24 ]

从期望的结果来看,您似乎希望交替调用不同数组元素的回调。 您不是仅在回调为真时才推送/返回,您是无条件推送,具体取决于其中一个回调的结果,这由索引决定。

 let myMap = function(array, cb1, cb2) { let emptyArr = [] for (let i = 0; i < array.length; i++) { let test = (i % 2 === 0? cb1: cb2)(array[i]); emptyArr.push(test); } return emptyArr } let triple = function(n) { return 3 * n; }; let half = function(n) { return n / 2; }; console.log(myMap([7, 3, 2, 9, 8], triple, half));

或者,清理一些

 const myMap = (array, cb1, cb2) => array.map( (val, i) => (i % 2 === 0? cb1: cb2)(val) ); const triple = n => 3 * n; const half = n => n / 2; console.log(myMap([7, 3, 2, 9, 8], triple, half));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM