Javascript 向大型对象数组添加属性,而无需手动遍历每个对象
我需要每一个都有一个键和一个名为text的字段。 文本应等于值,键应唯一 我如何才能做到这一点,而不需要在文件中手动查看7000所学校的数据 例:Javascript 向大型对象数组添加属性,而无需手动遍历每个对象,javascript,json,Javascript,Json,我需要每一个都有一个键和一个名为text的字段。 文本应等于值,键应唯一 我如何才能做到这一点,而不需要在文件中手动查看7000所学校的数据 例: 导入旧数组后,可以通过对其应用贴图操作符来创建新数组 var学校=[{ 价值观:“阿拉巴马农工大学” }, { 价值:“伯明翰阿拉巴马大学” }, { 价值:“阿姆里奇大学” }, { 价值:“亨茨维尔阿拉巴马大学” }, { 价值观:“阿拉巴马州立大学” }, { 价值:“阿拉巴马大学系统办公室” }, { 价值观:“阿拉巴马大学” } ] va
导入旧数组后,可以通过对其应用贴图操作符来创建新数组
var学校=[{
价值观:“阿拉巴马农工大学”
},
{
价值:“伯明翰阿拉巴马大学”
},
{
价值:“阿姆里奇大学”
},
{
价值:“亨茨维尔阿拉巴马大学”
},
{
价值观:“阿拉巴马州立大学”
},
{
价值:“阿拉巴马大学系统办公室”
},
{
价值观:“阿拉巴马大学”
}
]
var newVals=Schools.map(函数(项、索引){
返回{
值:item.value,
文本:item.value,
关键词:索引,,
}
});
console.log(newVals)
导入旧数组后,可以通过对其应用map运算符来创建新数组
var学校=[{
价值观:“阿拉巴马农工大学”
},
{
价值:“伯明翰阿拉巴马大学”
},
{
价值:“阿姆里奇大学”
},
{
价值:“亨茨维尔阿拉巴马大学”
},
{
价值观:“阿拉巴马州立大学”
},
{
价值:“阿拉巴马大学系统办公室”
},
{
价值观:“阿拉巴马大学”
}
]
var newVals=Schools.map(函数(项、索引){
返回{
值:item.value,
文本:item.value,
关键词:索引,,
}
});
console.log(newVals)
如果要在O(1)时间内更改值,则应该以不同的方式存储数据。这是基于您最初在编辑一个对象时所说的,但是如果您想编辑每个对象,上面的家伙有正确的答案
因此:
{
value: "University of Alabama in Huntsville",
text: "University of Alabama in Huntsville",
key: 9,
},
然后,当您这样做时:
{
university_1: { },
university_2: { },
...
}
这可以在没有任何循环的情况下发生,但是您需要创建数据,使其看起来像我所展示的那样。如果您希望在O(1)时间内更改值,则应该以不同的方式存储数据。这是基于您最初在编辑一个对象时所说的,但是如果您想编辑每个对象,上面的家伙有正确的答案 因此:
{
value: "University of Alabama in Huntsville",
text: "University of Alabama in Huntsville",
key: 9,
},
然后,当您这样做时:
{
university_1: { },
university_2: { },
...
}
这可以在没有任何循环的情况下发生,但您需要创建数据,使其看起来像我所展示的那样。使用ES6,您可以像这样做: <代码> var学校= [ {值:“阿拉巴马A&M大学”},{值:“伯明翰阿拉巴马大学”}:值:“AMRILL大学”},{值:“亨茨维尔阿拉巴马大学”},{值:“阿拉巴马州立大学”},{值:“阿拉巴马大学系统办公室”},{值:“Field}}”; const newArray=Schools.map((o,i)=>Object.assign(o,{text:o.value,index:i+1}));
console.log(newArray)使用ES6,您可以像这样执行: <代码> var学校= [ {值:“阿拉巴马A&M大学”},{值:“伯明翰阿拉巴马大学”}:值:“AMRILL大学”},{值:“亨茨维尔阿拉巴马大学”},{值:“阿拉巴马州立大学”},{值:“阿拉巴马大学系统办公室”},{值:“Field}}”; const newArray=Schools.map((o,i)=>Object.assign(o,{text:o.value,index:i+1})); console.log(newArray)使用ES6箭头分配尝试数组映射()
var学校数据=[{
价值观:“阿拉巴马农工大学”
},
{
价值:“伯明翰阿拉巴马大学”
},
{
价值:“阿姆里奇大学”
},
{
价值:“亨茨维尔阿拉巴马大学”
},
{
价值观:“阿拉巴马州立大学”
},
{
价值:“阿拉巴马大学系统办公室”
},
{
价值观:“阿拉巴马大学”
}];
var result=schoolData.map(obj=>Object.assign(obj,{text:obj.value,index:schoolData.indexOf(obj)}));
控制台日志(结果)代码>尝试使用ES6箭头分配的数组映射()
var学校数据=[{
价值观:“阿拉巴马农工大学”
},
{
价值:“伯明翰阿拉巴马大学”
},
{
价值:“阿姆里奇大学”
},
{
价值:“亨茨维尔阿拉巴马大学”
},
{
价值观:“阿拉巴马州立大学”
},
{
价值:“阿拉巴马大学系统办公室”
},
{
价值观:“阿拉巴马大学”
}];
var result=schoolData.map(obj=>Object.assign(obj,{text:obj.value,index:schoolData.indexOf(obj)}));
控制台日志(结果)代码>我认为没有任何实际的方法可以解决这个问题,只能对它进行迭代。你可能应该在数据库中有这个值。所以我需要使用map,然后更新每个对象,给它一个索引at的键,然后添加text属性,并将其设置为等于value?我认为没有实际的方法来处理这个问题,但要迭代它。你可能应该在DB中有这个值。所以我需要使用map,然后更新每个对象,给它一个索引的键,然后添加文本属性,并将其设置为等于值?假设他需要的键就是数组中的索引,假设你可以添加预定义的值而不是再次索引,就像你说的没有其他办法了@GerardoBLANCO@GerardoBLANCO另一种方法是将此任务委托给web worker,这样主线程就不会被阻止。worker可以返回新的数组。如果他所需的键只是数组中的索引,则此工作正常,但您可以添加预定义的值,而不是索引再次,这是通过你说的没有其他方法@GerardoBLANCO@GerardoBLANCO另一种方法是将此任务委托给web worker,以便主线程不会被阻止。worker可以返回新数组