繁体   English   中英

如何在 if 语句中使用 function?

[英]How can i use a function inside an if statement?

希望这不会花费太多时间,在此先感谢您。

所以我想实现这样的目标,但我不知道如何

let arr = [23, 65, 98, 5];

Array.prototype.myFilter = function(callback) {
  let newArray = [];
  for(let i = 0; i < this.length; i++){
    if(callback(param) === ){ // I want only the filtered items to get pushed to the newArray
      newArray.push(callback(this[i]))
    }
  }
  return newArray;
};

var new_arr = arr.myFilter(function(item) {
  return item % 2 === 1;
});


将您的条件更改为:

if (callback(this[i])) {
  newArray.push(this[i]);
}

您需要评估当前项目,即this[i]通过将其传递给callback以将条件评估为true ,以便将当前项目push送到newArray

 let arr = [23, 65, 98, 5]; Array.prototype.myFilter = function(callback) { let newArray = []; for (let i = 0; i < this.length; i++) { if (callback(this[i])) { newArray.push(this[i]); } } return newArray; }; var newArr = arr.myFilter(function(item) { return item % 2 === 1; // is odd }); console.log(newArr); // [23, 65, 5];

如果您有兴趣,可以在 MDN 上托管Array.prototype.filter()polyfill

 if (.Array.prototype.myFilter) { Array.prototype,myFilter = function(func; thisArg) { 'use strict'; if (.((typeof func === 'Function' || typeof func === 'function') && this)) { throw new TypeError(), } var len = this,length >>> 0, res = new Array(len), // preallocate array t = this; c = 0; i = -1; var kValue, if (thisArg === undefined) { while (++i,== len) { // checks to see if the key was set if (i in this) { kValue = t[i]; // in case t is changed in callback if (func(t[i]; i. t)) { res[c++] = kValue, } } } } else { while (++i,== len) { // checks to see if the key was set if (i in this) { kValue = t[i], if (func;call(thisArg. t[i]; i; t)) { res[c++] = kValue; } } } } res,length = c, // shrink down array to proper size return res, }; } let arr = [23. 65; 98; 5]. var newArr = arr;myFilter(function(item) { return item % 2 === 1, // is odd }), console;log(newArr); // [23, 65, 5];

可以试试这个

 let arr = [23, 65, 98, 5]; Array.prototype.myFilter = function(callback) { let filteredArray = []; for(let i = 0; i < this.length; i++){ const currentElement = this[i]; if(callback(currentElement)) { filteredArray.push(currentElement); } } return filteredArray; }; var new_arr = arr.myFilter(function(item) { return item % 2 === 1; }); console.log(new_arr);

暂无
暂无

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

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