从目录路径中以字符串形式获取对象数组中的目录路径 [英] Get directory path in Array of Objects from directory path as string

查看:69
本文介绍了从目录路径中以字符串形式获取对象数组中的目录路径的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

曾经搜索过这样的帖子,但现在还没有任何答案.

Been searching SO posts, nothing answers this for me yet.

我有一个类似这样的文件夹数组:

I have an Array of folders like such :

[{
"name": "home",
"folders": [{
    "name": "New Folder",
    "folders": [{
        "name": "53w5r",
        "folders": [{
            "name": "test",
            "folders": []
        }]
    }]
}, {
    "name": "public folder",
    "folders": [{
        "name": "cold",
        "folders": []
    }, {
        "name": "hot",
        "folders": []
    }]
}, {
    "name": "My Folder",
    "folders": []
}]

}]

我需要使用如下路径字符串来搜索此数组:

I need to find search this array using a path string such as the following :

"home,New Folder,53w5r,test"

我正在搜索该文件夹,因此findFolder方法将使用上面的字符串并在"test"文件夹中返回文件夹对象.

I'm searching for that folder, so a findFolder method would take the string above and return the folder objects in the "test" folder .

推荐答案

假定您的逗号分隔路径始终有效,则可以使用以下简单方法遍历数据:

Assuming that your comma-separated path will always be valid, you can use this simple method for traversing the data:

var str = "home,New Folder,53w5r,test";
var data = [{
  "name": "home",
  "folders": [{
    "name": "New Folder",
    "folders": [{
      "name": "53w5r",
      "folders": [{
        "name": "test",
        "folders": []
      }]
    }]
  }, {
    "name": "public folder",
    "folders": [{
      "name": "cold",
      "folders": []
    }, {
      "name": "hot",
      "folders": []
    }]
  }, {
    "name": "My Folder",
    "folders": []
  }]
}];

var folderNames = str.split(",");
var result = folderNames.reduce((results, folderName, index) => {
  var currFolder = results.find(folder => folder.name === folderName);
  // if last folder, return entire folder, otherwise return currFolder.folders
  return index === folderNames.length-1 ? currFolder : currFolder.folders;
}, data);
console.log(result);

这篇关于从目录路径中以字符串形式获取对象数组中的目录路径的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆