Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Array.prototype.map #11

Open
Sunny-117 opened this issue Nov 3, 2022 · 10 comments
Open

Array.prototype.map #11

Sunny-117 opened this issue Nov 3, 2022 · 10 comments

Comments

@Sunny-117
Copy link
Owner

const arr = [1, 2, 3]
Array.prototype.map = function (callback) {
    const res = [];
    for (let i = 0; i < this.length; i++) {
        res.push(callback(this[i], i, this))
    }
    return res;
}
const res = arr.map((ele, index, arr) => {
    return ele * 2
})
console.log(res)
@CwRv07
Copy link
Contributor

CwRv07 commented Nov 4, 2022

Array.prototype._map = function (cb, thisBinding) {
  // 排除回调非函数情况
  if (typeof cb !== "function") {
    throw new TypeError(`${cb} is not a function`);
  }
  // 排除this为非可迭代对象情况
  if (this == null || typeof this[Symbol.iterator] !== "function") {
    throw new TypeError(`${this} is not a iterable`);
  }
  // 将可迭代对象转换成数组
  const array = [...this];
  const result = [];
  // 执行遍历并回调
  for (let i = 0; i < array.length; i++) {
    result.push(cb.call(thisBinding, array[i], i, this));
  }
  return result;
};

@veneno-o
Copy link
Contributor

veneno-o commented Jan 16, 2023

Array.prototype._map = function (callback, objThis) {
	if (typeof callback !== "function") {
		throw new TypeError("callback type error!");
	}

	const res = [];
	for (let i = 0; i < this.length; ++i) {
		res.push(callback.call(objThis, this[i], i, this));
	}
	return res;
};

@sv-98-maxin
Copy link

Array.prototype.myMap = function (cb) {
  const newArr = []
  for (let i = 0, len = this.length; i < len; i++) {
    newArr.push(cb(this[i], i, this))
  }
  return newArr
}

@bearki99
Copy link

Array.prototype.map = function (callback) {
  const res = [];
  for (let i = 0; i < this.length; i++) {
    res.push(callback(this[i], i, this));
  }
  return res;
};

@kangkang123269
Copy link

Array.prototype.map = function(callback, thisArg) {
  var result = [];
  for (var i = 0; i < this.length; i++) {
    result.push(callback.call(thisArg, this[i], i, this));
  }
  return result;
}

@LifeIsTerrible
Copy link

Array.prototype._map = function (cb) {
    let res = []
    if (Array.isArray(this)) return
    for (let i = 0; i <= this.length; i++) {
        res.push(cb(this[i], i, this))
    }
    return res
}

@YMnotafraid
Copy link

Array.prototype.mymap = function (callback, thisArg) {
  const res = [];
  for (let i = 0; i < this.length; i++) {
    res.push(callback.call(thisArg, this[i], i, this));
    //回调函数默认的this为undefined,thisArg作为回调函数的this
  }
  return res;
};
const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
console.log(
  arr1.mymap(function (item, index, arr) {
    return 2 * this[index];
  }, arr2)
); //[ 8, 10, 12 ]

@Bbbtt04
Copy link

Bbbtt04 commented Mar 12, 2023

Array.prototype.map = function (cb) {
  const res = []
  for (let i = 0; i < this.length; i++) {
    res.push(cb(this[i], i, this))
  }
  return res
}
let arr = [1, 2, 3]
let res = arr.map((item, index, arr) => {
  return item + 1
})
console.log(res);

@cay-cospete
Copy link

Array.prototype._map = function(cb) {
  const result = [];
  for(let i=0; i<this.length; i++) {
    result.push(cb(this[i], i, this))
  }
  return result;
}

@cscty
Copy link

cscty commented Jun 17, 2023

Array.prototype.Map = function (fn) {
                let res = [];
                this.forEach(function (val, key) {
                    res.push(fn(val, key));
                });
                return res;
            };

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests