如何通过一个键过滤json数组中的对象

问题描述 投票:1回答:2

我制作一个角度为6的系统,我有更多100个输入用于制作,但我有很多形式,并且表格使用了一些输入很多次。因为我想要创造动态形式。但我认为如何将输入配置连接到正确对象的最佳形式。

我在思考创建输入的所有定义并捕获这个基于值的对象,但我的定义是这样做的

 let inputs: FormBase<any>[] = [

      new InputTextForm({
        key: 'Id',
        label: 'Id',
        value: '',
        required: true,
        order: 1
      }),

      new InputTextForm({
        key: 'Nome',
        label: 'Nome',
        value: '',
        required: true,
        order: 2
      }),

      new InputTextForm({
        key: 'Descricao',
        label: 'Descricao',
        order: 3
      }),

      new InputTextForm({
        key: 'PodeFracionar',
        label: 'Pode Fracionar',
        order: 4
      }),

      new InputTextForm({
        key: 'TaxaPis',
        label: 'Taxa Pis',
        order: 5
      }),
    ];


    return inputs.sort((a, b) => a.order - b.order);
  }

但是所有对象的名称都是InputTextForm,我需要基于key的过滤器。但我如何过滤并按键将一个InputTextForm推送到其他数组过滤?

javascript angular typescript
2个回答
2
投票

您是否已经尝试迭代数组并在每次迭代时检查key属性的值?

Lodash的_.forEach()方法对此非常有用。您可以迭代一个对象:

_.forEach(someObject, function(value,key) { /* some function */})

或者你可以迭代一个数组:

_.forEach(someArray, function(value) { if (value.key == 'someVal') {/*code*/}})

然后在forEach循环中,您可以检查您的值,如果它们匹配,则推送到您的其他数组。


2
投票

你不必在这里使用lodash数组对象有过滤方法会做同样的事情,你可以考虑使用原生的javascript函数然后为你的项目注入一个新的依赖项,它会给出相同的结果

let result = inputs.filter(i => i.key === 'TaxaPis') ; 
console.log(result);  // => [{key: 'TaxaPis', label: 'Taxa Pis',  order: 5}]
© www.soinside.com 2019 - 2024. All rights reserved.