Javascript 推进阵列
我需要遍历数组和数组中具有额外值的每个数组,将它们作为单独的项推送到其父数组。我希望这是有道理的 这是我的初始数组的结构:Javascript 推进阵列,javascript,arrays,array-push,Javascript,Arrays,Array Push,我需要遍历数组和数组中具有额外值的每个数组,将它们作为单独的项推送到其父数组。我希望这是有道理的 这是我的初始数组的结构: {type: [ 0: value: "tomato" ], [ 1: {value: "apple", [ extras: [ 0: { value: "green" } ], [ 1: { value: "red" } ] ] ],
{type:
[ 0:
value: "tomato"
],
[ 1:
{value: "apple",
[ extras:
[ 0: { value: "green" } ],
[ 1: { value: "red" } ]
]
],
[ 2:
value: "pineapple"
]
}
[type:
[ 0:
tomato
],
[ 1:
apple,
green,
red
],
[ 2:
pineapple
]
]
结果应该是什么样子:
{type:
[ 0:
value: "tomato"
],
[ 1:
{value: "apple",
[ extras:
[ 0: { value: "green" } ],
[ 1: { value: "red" } ]
]
],
[ 2:
value: "pineapple"
]
}
[type:
[ 0:
tomato
],
[ 1:
apple,
green,
red
],
[ 2:
pineapple
]
]
我尝试过但失败的地方:(我还评论了我在右行看到的错误)
var-response=/*第一个有问题的代码块的json是来自ajax的响应*/;
var items=JSON.parse(响应);
var type=Object.key(items)[0];
var myArray=[]
变量计数=项目[类型]。长度;
//循环浏览“类型”中的主要项目
对于(i=0;i
我不理解的主要问题,这似乎也是我示例中的问题: 如果声明空数组,如何:
- 是否将项目推送到该数组,并在该项目周围声明一个新数组
- 将另一个项目推送到围绕第一个项目创建的阵列中
- 您的问题在于:
var value = items[type][i][value];
你应该把它改成
var value = items[type][i].value;
这就是我相信你想要的。以下代码可能不正确,因为我近似于我认为您的
项所包含的内容
var items = {
type: [
{
value: "tomato"
},
{
value: "apple",
extras: [
{
value: "green"
}, {
value: "red"
}
]
},
{
value: "pineapple"
}
]
};
var myArray = {
type: []
};
var count = items['type'].length;
//Loop through main items in "type"
for (i = 0; i < count; i++) {
var subarray = [];
subarray.push(items['type'][i]['value']);
if (items['type'][i]['extras']) {
var extracount = items['type'][i]['extras'].length;
//Loop through extras
for (k = 0; k < extracount; k++) {
var extra = items['type'][i]['extras'][k]['value'];
subarray.push(extra);
}
}
myArray['type'].push(subarray);
}
var项目={
类型:[
{
价值:“西红柿”
},
{
价值:“苹果”,
额外费用:[
{
价值:“绿色”
}, {
值:“红色”
}
]
},
{
价值:“菠萝”
}
]
};
var myArray={
类型:[]
};
变量计数=项目['type']。长度;
//循环浏览“类型”中的主要项目
对于(i=0;i
一些注意事项:
您肯定需要了解javascript中数组和对象之间的区别。网上有很多关于这方面的资源
从对象obj
检索/操作属性prop
时(即对于键值对),需要使用obj.prop
或obj['prop']
。请注意后一个示例中使用的字符串
对于数组arr
,应该使用arr.push(value)
将新值推送到数组上。不,这没有任何意义。在执行此操作之前,您应该阅读更多有关javascript对象和数组的信息。有人可以为您编写代码,但您不会从中学到任何东西。你的数组完全错了。无论如何,你应该解释一下预期的结果behavior@Frondor我不同意,我会从中学到很多。。我做了我的研究,但我没有找到任何关于这个问题的好参考<代码>myArray[类型]=[值]代码>工作正常,但myArray[type][i]=[value]代码>不。。与push()
相同。不能将索引添加到JavaScript数组中。出于这些目的使用对象,但正如@Frondor所说,在做任何事情之前,都要学习和阅读更多关于JavaScript的知识。是的,您正在尝试使用和创建关联数组,这些数组只是JavaScript中具有命名属性的对象。如果您需要关联数组,则必须使用对象,Javascript数组仅限于数字顺序键和值。感谢您的回答。我通常知道这两者之间的区别,但当object包含多个包含数组和对象等的数组时,它会变得复杂。然后它会混淆选择的外观以及何时使用push()
或其他方法。调试变量的快速方法是在开发人员工具(或浏览器的等效工具)中的代码中创建断点,或使用控制台.log(项)
。您将能够查看变量的内容,并确定每个元素的类型(本例中为数组或对象)。