【问题标题】:Ordering the content of on array with NodeJS and lodash使用 NodeJS 和 lodash 对数组的内容进行排序
【发布时间】:2017-06-01 18:39:51
【问题描述】:

我有一个这样的数组:

[
  'pathOne/pathTwo/contentOne',
  'pathOne/pathThree/pathFour/contentTwo',
  'pathOne/pathThree/contentFive',
  'pathFive/pathThree/contentThree',
  'pathOne/pathTwo/contentFour'
]

我希望在下一个子级别之前先有一个 alpha 顺序和内容的字符串:

路径五

  • 路径三
    • 内容三

路径一

  • 路径三
    • contentFive(子级别之前的内容)
    • 路径四
    • contentTwo(多一层)
  • 路径二
    • 内容四
    • contentOne

我开始用 lodash 将它放入一个数组中,以便对其进行最简单的操作,但我无法得到它。

【问题讨论】:

  • 到目前为止您尝试过什么?您是在寻找它来对数组进行排序还是将其分解为嵌套对象?你能把你想要的结果转换成你想要的结果更清晰的代码格式吗?
  • 搜索排序算法,数不胜数。
  • 是的,在一个对象中也可以,我可以在获取所有数据后。
  • 我做了一个 foreach 然后一个拆分 _.split(value, '/'); 像这样我将每一行放在一个数组中。现在尝试再次执行一次 foreach 并推入一个新数组,但是当我需要放置内容和下一个子级别(案例 pathOne - pathThree)时,我不知道该怎么做。

标签: javascript node.js lodash


【解决方案1】:

尝试了很多东西,我终于找到了我想要的。

var object = {};

var test = [
    'pathOne/pathTwo/contentTwo',
    'pathOne/pathTwo/contentOne',
    'pathOne/contentThree',
    'pathOne/pathThree/pathFour/contentFour'
];

Object.resolve = function(path, obj) {
    return path.split('.').reduce(function(prev, curr) {
        return prev ? prev[curr] : undefined
    }, obj || self)
}

_.forEach(test, function(value) {
    var arrayPath = _.split(value, '/');
    var file = arrayPath.pop();

    if(Object.resolve(arrayPath.join('.'), object) === undefined)
      arrayPath.push(0);
    else
      arrayPath.push(arrayPath.length-1);

    _.set(object, arrayPath, file);
});

console.log(object);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-10
    • 2021-02-16
    • 2017-09-08
    • 2022-07-22
    • 2021-07-25
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多