javascript:通过嵌套对象/数组循环并添加属性
我对Javascript不是很在行。我有一个嵌套数组,它是后端数据的JSON表示。它显示了校样列表和每个校样中使用的图像。其外观如下所示:javascript:通过嵌套对象/数组循环并添加属性,javascript,arrays,iteration,Javascript,Arrays,Iteration,我对Javascript不是很在行。我有一个嵌套数组,它是后端数据的JSON表示。它显示了校样列表和每个校样中使用的图像。其外观如下所示: var project = [{ "proof":"Proof_1", "images":[ { "image_id":"12469", "name":"1911791794.jpg", }, { "image_id":"1
var project = [{
"proof":"Proof_1",
"images":[
{
"image_id":"12469",
"name":"1911791794.jpg",
},
{
"image_id":"12470",
"name":"1911802897.jpg"
},
{
"image_id":"12471",
"name":"1911761073.jpg"
}
},
{
"proof":"Proof_2",
"images":[
{
"image_id":"12469",
"name":"1911791794.jpg",
},
{
"image_id":"12470",
"name":"1911802897.jpg"
}
}];
我想将图像计数添加到每个校对部分,以便修改后的数据结构如下所示:
var project = [{
"proof":"Proof_1",
"image_count": 3, //<----this is new property I want to add
"images":[
{
"image_id":"12469",
...
var项目=[{
“证明”:“证明1”,
“图像计数”:3,//您可以使用.map
或简单循环
var项目=[{
“证明”:“证明1”,
“图像”:[{
“图像id”:“12469”,
“名称”:“1911791794.jpg”,
}, {
“图像id”:“12470”,
“名称”:“1911802897.jpg”
}, {
“图像id”:“12471”,
“名称”:“1911761073.jpg”
}]
}, {
“证明”:“证明2”,
“图像”:[{
“图像id”:“12469”,
“名称”:“1911791794.jpg”,
}, {
“图像id”:“12470”,
“名称”:“1911802897.jpg”
}]
}];
projects=projects.map(函数(元素){
element.image\u count=element.images.length;
返回元素;
});
console.log(项目);
var len=projects.length,i;
对于(i=0;i console.log(projects);
您可以使用.map
或简单循环
var项目=[{
“证明”:“证明1”,
“图像”:[{
“图像id”:“12469”,
“名称”:“1911791794.jpg”,
}, {
“图像id”:“12470”,
“名称”:“1911802897.jpg”
}, {
“图像id”:“12471”,
“名称”:“1911761073.jpg”
}]
}, {
“证明”:“证明2”,
“图像”:[{
“图像id”:“12469”,
“名称”:“1911791794.jpg”,
}, {
“图像id”:“12470”,
“名称”:“1911802897.jpg”
}]
}];
projects=projects.map(函数(元素){
element.image\u count=element.images.length;
返回元素;
});
console.log(项目);
var len=projects.length,i;
对于(i=0;i
您可以利用以下方法:
此外,正如@Sebastian Lasse指出的,您应该使用复数形式命名数组,以避免混淆(projects
,而不是project
)。您可以利用以下方法:
此外,正如@Sebastian Lasse所指出的,您应该使用复数形式命名数组以避免混淆(projects
,而不是project
)。在更正JSON中缺少的]
错误后,您可以执行以下操作:
project.forEach(函数(证明){
proof.image\u count=proof.images.length;
})
演示->在更正JSON中缺少的]
错误后,您可以执行以下操作:
project.forEach(函数(证明){
proof.image\u count=proof.images.length;
})
演示->对。你应该用复数形式命名数组-“项目”。这是一个惯例,以避免混淆。正如我所料。没有理由。谢谢你的回答。你应该用复数形式命名数组-“项目”。这是一个避免混淆的惯例。正如我所预料的。没有理由。谢谢你的回答。事实上,他想要的是image\u count
,而不是imageCount
。@DanielKmak,谢谢你,我想我对camelCase太有意见了:(是的,我一开始也想这么做。camelCase
太好了。:t谢谢你的回答实际上,他想要的是image\u count
而不是imageCount
。@DanielKmak,谢谢你,我想我对camelCase太有意见了:(是的,我一开始也想这么做。camelCase
太好了。:d谢谢你的回答如果你找到了解决方案,请将其标记为接受答案。如果你找到了解决方案,请将其标记为接受答案。
project = project.map(function (item) {
item.image_count = item.images.length;
return item;
});