Javascript 为阵列中的多个相同对象附加唯一值
我正在研究angular 6。我有一个对象数组(来自API)。这些对象具有相似的属性,我想将不同的值附加到属性名为“value”的每个元素上。但是我给出的值将附加到数组的所有元素上 试图为每个对象指定唯一的id,以区分一个对象和另一个对象。但是一个唯一的键被分配给所有相似的对象元素Javascript 为阵列中的多个相同对象附加唯一值,javascript,arrays,Javascript,Arrays,我正在研究angular 6。我有一个对象数组(来自API)。这些对象具有相似的属性,我想将不同的值附加到属性名为“value”的每个元素上。但是我给出的值将附加到数组的所有元素上 试图为每个对象指定唯一的id,以区分一个对象和另一个对象。但是一个唯一的键被分配给所有相似的对象元素 uniqueFields = [ { name: "ProformaInvoiceNumber", type: "text", options: Array(0),
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我不明白你想做什么。只要给出原始数据、预期结果和您当前的结果,我就能回答您!