Javascript 为阵列中的多个相同对象附加唯一值

Javascript 为阵列中的多个相同对象附加唯一值,javascript,arrays,Javascript,Arrays,我正在研究angular 6。我有一个对象数组(来自API)。这些对象具有相似的属性,我想将不同的值附加到属性名为“value”的每个元素上。但是我给出的值将附加到数组的所有元素上 试图为每个对象指定唯一的id,以区分一个对象和另一个对象。但是一个唯一的键被分配给所有相似的对象元素 uniqueFields = [ { name: "ProformaInvoiceNumber", type: "text", options: Array(0),

我正在研究angular 6。我有一个对象数组(来自API)。这些对象具有相似的属性,我想将不同的值附加到属性名为“value”的每个元素上。但是我给出的值将附加到数组的所有元素上

试图为每个对象指定唯一的id,以区分一个对象和另一个对象。但是一个唯一的键被分配给所有相似的对象元素

uniqueFields = [
    {
      name: "ProformaInvoiceNumber",
      type: "text",
      options: Array(0),
      isCommon: false,
      required: true
    },
    {
      name: "ProformaInvoiceDate",
      type: "date",
      options: Array(0),
      isCommon: false,
      required: true
    },
    {
      name: "ProformaInvoiceNumber",
      type: "text",
      options: Array(0),
      isCommon: false,
      required: true
    },
    {
      name: "ProformaInvoiceDate",
      type: "date",
      options: Array(0),
      isCommon: false,
      required: true
    }];


//received values from html form
recievedValues = [1, {name }, 2, { obj2 }];

//give values to my uniqueFields from the array recievedValues 
this.uniqueFields.foreach((element, i) => {
  element.value = recievedValues[i];//both arrays have the same length 
});
需要一个包含对象的数组,每个对象都具有属性“value”和来自相应数组元素的值。相反,我得到了这个

uniqueFields=[
{
名称:“形式发票编号”,
键入:“文本”,
选项:数组(0),
isCommon:false,
要求:正确,
价值:2
},
{
名称:“形式发票日期”,
键入:“日期”,
选项:数组(0),
isCommon:false,
要求:正确,
值:{obj2}
},
{
名称:“形式发票编号”,
键入:“文本”,
选项:数组(0),
isCommon:false,
要求:正确,
价值:2
},
{
名称:“形式发票日期”,
键入:“日期”,
选项:数组(0),
isCommon:false,
要求:正确,
值:{obj2}
}]; 

已经做了一段时间,下面是我的解决方案。Agularjs在ng repeat上使用$$hashKey识别对象有自己的方法,而current angular不包含该方法,因此对于包含类似对象元素的数组,我必须创建一个接口并使用唯一的对象来识别它们

export interface Field {  
    name:string;
    type:string;
    options:string[];
    isCommon:boolean;
    value:any;  
} 
并在将值附加到数组中的对象之前使用新对象

var fieldObject: Field =  {
   name: this.uniqueFields[0]['name'],
   type: this.uniqueFields[0]['type'],
   options:  this.uniqueFields[0]['options'], 
   isCommon: this.uniqueFields[0]['isCommon'],
   value: null
}

您的问题完全不清楚,代码似乎不太有效。请在发布问题之前阅读,并提供一个复制您的问题(答案中的一个片段就足够了)我还随意编辑了您问题的标记:大多数标记不适合,只是污染了标记。如果您可以使用javascript动态添加新属性,不能用typescript的新属性以这种方式更改对象的类型。您需要使用包含“value”属性的接口/类键入数组。我甚至不明白你在复制代码时是如何得到结果的,我会出错。@Maryannah谢谢你编辑这个问题。哪一部分不清楚?我已经尽可能把它说清楚了。您可以看到第二个数组uniqueFields应该获得value属性和唯一值,但对于具有类似属性的对象,它是重复的。就像两个名为“ProformaInvoiceDate”的对象具有相同的值一样。@NathanGL我不明白你想做什么。只要给出原始数据、预期结果和您当前的结果,我就能回答您!