求解JavaScript数据结构处理

有一个 “长度动态” 的数组,例如:["aaa",''bbb","ccc","ddd "],那么我想得到一个结构["aaa/","aaa/bbb/","aaa/bbb/ccc/","aaa/bbb/ccc/ddd/"],
如何封装个方法将原来数组传进去,return我想要的数组结构。

阅读 1.7k
2 个回答

reduce可以很容易实现:

function operArr(arr){
  return arr.reduce(function(pre, cur, index){
    //console.log(pre, cur, index)
    pre.push( (pre[index-1] ?? "") + cur + "/")
    return pre
  }, [])
}

let newArr = operArr(["aaa","bbb","ccc","ddd"])
console.log(newArr)

https://codepen.io/xuge/pen/M...

// 一:
var data = ["aaa","bbb","ccc","ddd"];
  
function acc(arr) {
  var result = [];
  arr.reduce((res, v) => {
    res += v+'/';
    result.push(res)
    return res;
  }, '');
  return result;
}

acc(data)
// 二:
var data = ["aaa","bbb","ccc","ddd"];
  
function acc(arr) {
  return arr.reduce((res, v,i) => {
    res.push(arr.slice(0,i+1).join('/')+'/');
    return res;
  }, [])
}

acc(data)
// 三:
var data = ["aaa","bbb","ccc","ddd"];
  
function acc(arr) {
  return arr.reduce((res, v, i) => {
        res.push( (res[i-1]||'') + v + '/' )
        return res;
    }, [])
}

acc(data)

大同小异的几个方法

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题