输入n个数组,返回交集、仿Object.assign的功能、仿Array.map的功能

输入n个数组,返回交集

let a = [2, 3];
  let b = [2, 3, 5];
  let c = [2, 3, 5, 6, 7];
  function intersect(...args) {/*  */
    if (args.length === 0) {
      return [];
    }
    if (args.length === 1) {
      return args[0];
    }
    return args.reduce((prev, next) => {
      return prev.filter((i) => next.indexOf(i) > -1);
    });
  }

仿Object.assign的功能

let obj1 = { a: 1, b: { a: 1 }, c: 3, };
  let obj2 = { a: 1, b: { a: 'i' }, e: 3, };
  function assign(to, from) {
    if (to === from) {
      return to;
    }
    from = Object(from); //hasOwnProperty
    Object.keys(from).forEach((item, index) => {
      to[item] = from[item]
    });
    return to;
  }
  console.log(assign(obj1, obj2));

仿Array.map的功能

rray.prototype.myMap = function (fn, context) {
    let resArr = [];
    const me = this;

    const ctx = context ? context : me; // 定义上下文

    if (typeof fn !== "function") {
      throw new Error(`${fn} is not a function`);
    }
    me.forEach((item, index) => {
      resArr.push(fn.call(ctx, item, index, me)); // 将回调结果放入数组中
    });

    return resArr; // 返回map后的数组
  };
  const arr = [1, 2, 3];
  const ar1 = [3, 9, 8];

  const newArr = arr.myMap(function (item, index, _arr) {
    return item * 2;
  }, ar1);
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值