Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向大型对象数组添加属性,而无需手动遍历每个对象_Javascript_Json - Fatal编程技术网

Javascript 向大型对象数组添加属性,而无需手动遍历每个对象

Javascript 向大型对象数组添加属性,而无需手动遍历每个对象,javascript,json,Javascript,Json,我需要每一个都有一个键和一个名为text的字段。 文本应等于值,键应唯一 我如何才能做到这一点,而不需要在文件中手动查看7000所学校的数据 例: 导入旧数组后,可以通过对其应用贴图操作符来创建新数组 var学校=[{ 价值观:“阿拉巴马农工大学” }, { 价值:“伯明翰阿拉巴马大学” }, { 价值:“阿姆里奇大学” }, { 价值:“亨茨维尔阿拉巴马大学” }, { 价值观:“阿拉巴马州立大学” }, { 价值:“阿拉巴马大学系统办公室” }, { 价值观:“阿拉巴马大学” } ] va

我需要每一个都有一个键和一个名为text的字段。 文本应等于值,键应唯一

我如何才能做到这一点,而不需要在文件中手动查看7000所学校的数据

例:


导入旧数组后,可以通过对其应用贴图操作符来创建新数组

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可以返回新数组