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

时间:2018-07-31 19:12:45

标签: javascript angular typescript

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

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

 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,我将需要基于键的过滤器。但是如何按键过滤一个InputTextForm并将其推入其他数组过滤?

2 个答案:

答案 0 :(得分:2)

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

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

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

或者您可以遍历数组:

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

然后在forEach循环中,您可以检查您的值,如果它们匹配,则推入另一个数组。

答案 1 :(得分:2)

您不必使用 lodash ,这里的数组对象具有filter方法也可以做到这一点,您可以考虑使用本机javascript函数,然后向您的项目注入新的依赖项,从而使结果相同

let result = inputs.filter(i => i.key === 'TaxaPis') ; 
console.log(result);  // => [{key: 'TaxaPis', label: 'Taxa Pis',  order: 5}]