如何比较同一对象的两个数组并将它们推入变量

How to compare two arrays of same object and push them in a variable

我在另外两个名为 formKeyValuesform

的对象中有一个对象

formKeyValues

形式

我只想将 formKeyValues 中的键和值推送到新数组 parameter - 键在 form.formKeys -

我试过了,但没用。

this.formKeyValues=this.selectedTimeLine.formKeyValues;
this.parameter=[];
this.formKeyValues.forEach((para)=>{
  if(para.key==this.selectedTimeLine.form.formKeys){
    this.parameter.push('d[/data/'+this.selectedTimeLine.form.formId+'/'+para.key+']='+para.value);
  }
});

请找到以下解决方案。 我已经给出了 js 解决方案,所以它可以 运行 在这里。您可以通过将 var 替换为 const 将其转换为 angular。

var formKeyValues = [{
    key: 'key 1',
    value: 1
  },
  {
    key: 'key 2',
    value: 2
  },
  {
    key: 'key 3',
    value: 3
  },
  {
    key: 'key 4',
    value: 4
  },
  {
    key: 'key 5',
    value: 5
  },
];

var form = {
  formId: 1,
  formKeys: ['key 2', 'key 4', 'key 5']
};

var parameters = this.formKeyValues.filter(x => this.form.formKeys.indexOf(x.key) > -1).map(para => 'd[/data/'+this.form.formId+'/'+para.key+']='+para.value);
console.log(this.parameters);

您可以使用 includes to check if an element is contained in an array, filter to produce an array based on the previous condition, and map 将生成的数组转换为您想要的格式。

尝试以下方法

this.parameter = this.selectedTimeLine.formKeyValues
  .filter(keyValue => this.selectedTimeLine.form.formKeys.includes(keyValue.key))
  .map(keyValue => 'd[/data/'+this.selectedTimeLine.form.formId+'/'+keyValue.key+']='+keyValue.value);