我从一个对象创建一个新数组。 我用for循环做这个。
for (var key in data["record"])
{
if (data["record"].hasOwnProperty(key))
{
if (data["record"][key]["acquisition.method"] != undefined ) {
newObject[key] = [];
newObject[key]["acquisition.method"] = data["record"][key]["acquisition.method"][0];
if (data["record"][key]["production.date.end"] != undefined ) {
newObject[key]["production.date"] = data["record"][key]["production.date.end"][0];
}
}
}
}
数组在console.log中显示如下:
0: Array[0]
1: Array[0]
2: Array[0]
3: Array[0]
4: Array[0]
5: Array[0]
我想这样做:
record: Array[0]
record: Array[0]
record: Array[0]
record: Array[0]
record: Array[0]
我该怎么做?
添加了JSON
newObject = [
"record": [
"something": "value",
"somethingelse": "value"
],
"record": [
"something": "value",
"somethingelse": "value"
],
"record": [
"something": "value",
"somethingelse": "value"
],
"record": [
"something": "value",
"somethingelse": "value"
]
]
我唯一能做到的就是这样:
newObject = [
"0": [
"something": "value",
"somethingelse": "value"
],
"1": [
"something": "value",
"somethingelse": "value"
],
"2": [
"something": "value",
"somethingelse": "value"
],
"3": [
"something": "value",
"somethingelse": "value"
]
]
我尝试过类似的东西,但我知道推送只适用于数组:
var newObject = {};
var records ={};
records["record"] = {};
for (var key in data["record"])
{
if (data["record"].hasOwnProperty(key))
{
if (data["record"][key]["acquisition.method"] != undefined ) {
records["record"]["acquisition.method"] = data["record"][key]["acquisition.method"][0];
if (data["record"][key]["production.date.end"] != undefined ) {
records["record"]["production.date"] = data["record"][key]["production.date.end"][0];
newObject.push(records);
}
}
}
}
我现在尝试了什么:
var records =[];
var newObject1 = {};
var newObject2= {};
for (var key in data["record"])
{
if (data["record"].hasOwnProperty(key))
{
if (data["record"][key]["acquisition.method"] != undefined ) {
newObject2["acquisition.method"] = data["record"][key]["acquisition.method"][0];
if (data["record"][key]["production.date.end"] != undefined ) {
newObject2["production.date"] = data["record"][key]["production.date.end"][0];
newObject1["record"] = newObject2;
}
}
}
records.push(newObject1);
}
答案 0 :(得分:1)
如果我正确理解你的代码(并且我想我是:) :),你要做的就是使你可以用一个字符串访问数组中的每个记录(key )。这可以通过使用JSON实现。即使使用JSON,您仍然可以通过索引(您看到的整数键)访问数组中的元素。
的更新强>
想想这样,你试图用一个键访问数组中的一堆对象。问题是,根据定义,密钥是指单个值。因此,您不能对多个对象使用相同的键。但是,您可以创建一个数组,键“记录”指的是将返回所有这些内部键值对的数组。
更新2
可以这样想:假设您使用的是原始数组(在您最初发布的代码中创建的数组)。现在假设您将该数组设置为名为var rec
的变量的值。在控制台中查看变量rec
的值时,您将看到在原始帖子上列出的确切输出(“0:Array [0],1:Array [1] .....” )。退后一步,我们知道变量rec
指的是(即,它是一个包含所有这些数组的数组)(应该是这样)。现在,您要做的是:创建一个新对象obj1
,并为其指定一个名为record
的属性,并将该属性的值设置为您的变量rec
。这意味着您有一个可以通过obj1
访问您的数据的对象obj["record"]
。
请注意,这是一个概念性解决方案 - 而不是完整的解决方案。
如果您有任何疑问,请与我们联系。祝好运! :)