解析对象数组

时间:2019-01-02 20:38:07

标签: javascript typescript

如何解析对象数组,因此我将得到包含“ ild”的“ text”的所有元素的数组。

这是一个示例数组:

public data: any[] = [
  {
    treeViewKey:0,
    id: 1,
    text: 'Root Node 1'
  }, {
    treeViewKey:1,
    id: 2,
    text: 'Root Node 2'
  }, {
    treeViewKey:1_0,
    id: 3,
    parentId: 2,
    text: 'Child node of Root Node 2'
  }, {
    treeViewKey:1_1,
    id: 4,
    parentId: 2,
    text: 'Child node of Root Node 2'
  }, {
    treeViewKey:1_2_0,
    id: 5,
    parentId: 4,
    text: 'Child node of Root Node 2'
  }
];

我应该以3个元素结尾。在javascript或打字稿中实现该目标的最佳方法是什么?

最终结果应该是:

      [
    {
    treeViewKey:1_0,
    id: 3,
    parentId: 2,
    text: 'Child node of Root Node 2'
  }, {
    treeViewKey:1_1,
    id: 4,
    parentId: 2,
    text: 'Child node of Root Node 2'
  }, {
    treeViewKey:1_2_0,
    id: 5,
    parentId: 4,
    text: 'Child node of Root Node 2'
  }
]

2 个答案:

答案 0 :(得分:3)

如果您正在寻找所有的孩子,那么拥有更好的财产就可以得到他们。

那就是parentId。如果指定了parentId,则它们是子级。

因此,请过滤数据输入,以查找具有指定的parentId属性的数据输入。

在下面,也有根据您的要求在文本中查找“ ild”的情况。

const data = [
  {
    treeViewKey:0,
    id: 1,
    text: 'Root Node 1'
  }, 
  {
    treeViewKey:1,
    id: 2,
    text: 'Root Node 2'
  }, 
  {
    treeViewKey:'1_0',
    id: 3,
    parentId: 2,
    text: 'Child node of Root Node 2'
  }, {
    treeViewKey:'1_1',
    id: 4,
    parentId: 2,
    text: 'Child node of Root Node 2'
  }, {
    treeViewKey:'1_2_0',
    id: 5,
    parentId: 4,
    text: 'Child node of Root Node 2'
  }
];

// filter the elements with parentId property
console.log(data.filter(el => el.parentId));
// filter the elements with 'ild' string in text property
console.log(data.filter(el => el.text.includes('ild')));

答案 1 :(得分:0)

类似的东西:

const elements = data.filter(item => item.parentId);