根据指定格式解构数组

 根据formater(String类型)解构数组,返回对应字符的值,无对应值返回undefined

const parse = (str) =>
  JSON.parse(str.replace(/([\d\w]{1,})/g, (subStr) => `"${subStr}"`));

function destructuringArray(array, formater) {
  function fn(value, key, result) {
    if (Array.isArray(key)) {
      let newResult = { ...result };
      key.forEach((item, index) => {
        newResult = fn(value?value[index]:undefined, item, newResult);
      });
      return newResult;
    }

    return {
      ...result,
      [key]: value
    };
  }

  return fn(array, parse(formater), {});
}

console.log(destructuringArray([1, 2], "[a,b]"));
// {a: 1, b: 2}
console.log(destructuringArray([1, [2, 4], 5], "[a,[b],c,d]"));
// {a: 1, b: 2, c: 5, d: undefined}
console.log(destructuringArray([1, [2, 4], 5], "[a,[b],c,[d]]"));
// {a: 1, b: 2, c: 5, d: undefined}
console.log(
  destructuringArray(
    [1, [2, [4, [5], 10]], 6, 7, [8, 9]],
    "[a,[b,[c,[d],x]],e,f,[g,h]]"
  )
);
// {a: 1, b: 2, c: 4, d: 5, x: 10, e: 6, f: 7, g: 8, h: 9}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值