首页 > 解决方案 > Javascript 聚合

问题描述

我需要 javascript 方面的帮助。我需要删除已经在路径中的对象。

如您所见,有 3 个路径属性。

1) golang 2) 根目录/DCL/JAVA 3) 根目录/DCL/JAVA/JAVA1/JAVA2

point 2 JAVA 是 JAVA 2 文件夹的根目录。我需要从数组中删除整个对象。

物体可以在任何位置。

[
  {
    level: '0',
    paths: 'golang',
    name: 'golang',
    updatedOn: 1998902546,
    type: 'folder',
    uuid: 'cd315c90-a9f8-48d9-9aed-a97b246b27e9',
    createdOn: 1998902546,
    elementType: 'folder'
  },
  {
    level: '4', //. remove this object in an array because Root/BCL/JAVA/JAVA1/JAVA2 (JAVA2)is a child of JAVA -> Root/BCL/JAVA
    paths: 'Root/BCL/JAVA/JAVA1/JAVA2',
    name: 'JAVA2',
    type: 'folder',
    elementType: 'folder',
    uuid: 'fe32e4b8-37be-4416-b129-852da83f5549',
    createdOn: 2113950571
  },
  { 
    level: '2', 
    paths: 'Root/BCL/JAVA',
    name: 'JAVA',
    updatedOn: 2039112906,
    type: 'folder',
    elementType: 'folder',
    uuid: 'cd315c90-a9f8-48d9-9aed-a97b246b27e7',
    creadedOn: 2039112906
  }
]
// split the paths by "/" and pushed in another array to match
for (let i = 0; i < list.length; i += 1) {
        const l = parseInt(list[i].level, 10)
        let splitArr = [];
        if (list[i].paths.length > 0) {
          splitArr = list[i].paths.split('/');
          arr2.push(splitArr)
        } else {
          arr2.push(list[i].paths)
        }

      }

不确定是否需要拆分。现在有点迷路了,请指导。

标签: javascriptnode.js

解决方案


过滤是否可以在任何其他路径的位置 0 找到字符串。
您没有指定如果路径相同会发生什么,但这只会保留第一个。

data = [
 {
    level: '0',
    paths: 'golang',
    name: 'golang',
    updatedOn: 1998902546,
    type: 'folder',
    uuid: 'cd315c90-a9f8-48d9-9aed-a97b246b27e9',
    createdOn: 1998902546,
    elementType: 'folder'
  },
  {
    level: '2',
    paths: 'Root/BCL/JAVA',
    name: 'JAVA',
    updatedOn: 2039112906,
    type: 'folder',
    elementType: 'folder',
    uuid: 'cd315c90-a9f8-48d9-9aed-a97b246b27e7',
    createdOn: 2039112906
  },
  {
    level: '4',
    paths: 'Root/BCL/JAVA/JAVA1/JAVA2',
    name: 'JAVA2',
    type: 'folder',
    elementType: 'folder',
    uuid: 'fe32e4b8-37be-4416-b129-852da83f5549',
    createdOn: 2113950571
  },
  {
    level: '2',
    paths: 'Root/BCL/JAVA',
    name: 'JAVA',
    updatedOn: 2039112906,
    type: 'folder',
    elementType: 'folder',
    uuid: 'cd315c90-a9f8-48d9-9aed-a97b246b27e7',
    createdOn: 2039112906
  },
  {
    level: '4',
    paths: 'Root/BCL/JAVA/JAVA1/JAVA2',
    name: 'JAVA2',
    type: 'folder',
    elementType: 'folder',
    uuid: 'x',
    createdOn: 2113950571
  },
  {
    level: '2',
    paths: 'Root/BCL/JAVA',
    name: 'JAVA',
    updatedOn: 2039112906,
    type: 'folder',
    elementType: 'folder',
    uuid: 'cd315c90-a9f8-48d9-9aed-a97b246b27e7',
    createdOn: 2039112906
  }
]
console.log(
data.filter((p,i)=>data.every((x,j)=>x===p||!p.paths.startsWith(x.paths)||(x.paths===p.paths&&i>j)))
)


推荐阅读