【发布时间】:2018-12-31 09:53:07
【问题描述】:
我想根据一个类别的属性数量来处理数组。
我使用可用属性创建了一个数组(array_a),并根据属性(array_colors,array_sizes)对该数组值进行分组。例如现在我有两个数组'array_colors'和'array_sizes',所以在我的代码中我循环它们并创建了一个对象数组(array_b)。 但我的问题是我想处理动态数量的属性。
var array_a = [
{
"color":{
"id":2,
"name":"Green"
}
},
{
"color":{
"id":3,
"name":"Yellow"
}
},
{
"size":{
"id":5,
"name":"16"
}
},
{
"size":{
"id":6,
"name":"17"
}
},
{
"size":{
"id":7,
"name":"18"
}
}
];
array_colors = array_a.filter(function(myObject) {
return myObject.hasOwnProperty('color');
});
array_sizes = array_a.filter(function(myObject) {
return myObject.hasOwnProperty('size');
});
array_b = [];
for(var i = 0; i < array_colors.length; i++) {
for (var j = 0; j < array_sizes.length; j++) {
array_b.push( {
"is_available":true,
"qty":0,
"price":0,
"color":array_colors[i],
"size":array_sizes[j]
});
}
}
array_b = [
{
"is_available":true,
"qty":0,
"price":0,
"color":{
"id":2,
"name":"Green"
},
"size":{
"id":5,
"name":"16",
"text":"16"
}
},
{
"is_available":true,
"qty":0,
"price":0,
"color":{
"id":2,
"name":"Green"
},
"size":{
"id":6,
"name":"17",
"text":"17"
}
},
{
"is_available":true,
"qty":0,
"price":0,
"color":{
"id":2,
"name":"Green"
},
"size":{
"id":7,
"name":"18",
"text":"18"
}
},
{
"is_available":true,
"qty":0,
"price":0,
"color":{
"id":3,
"name":"Yellow"
},
"size":{
"id":5,
"name":"16",
"text":"16"
}
},
{
"is_available":true,
"qty":0,
"price":0,
"color":{
"id":3,
"name":"Yellow"
},
"size":{
"id":6,
"name":"17",
"text":"17"
}
},
{
"is_available":true,
"qty":0,
"price":0,
"color":{
"id":3,
"name":"Yellow"
},
"size":{
"id":7,
"name":"18",
"text":"18"
}
}
]
我预期的数组如上。我想动态处理颜色、大小等属性。
【问题讨论】:
-
您确定这是您的预期输出吗?
'red'不在您的输入中(而且您在pushing 到array_b的对象中似乎没有很多属性?) -
对不起,我不明白你的意思
-
你说你的预期输出是
array_b = [ {'color':'red','size':16}, {'color':'red','size':17}, {'color':'green','size':16}, {'color':'green','size':17} ],但是'color':'red'从哪里来?'red'不在脚本中的任何其他位置,为什么它会神奇地出现在输出中?此外,green在您的输入中是大写的,当您将其转换为array_b时,您是否想要在颜色上调用toLowerCase? -
您的预期输出也不包含除
color和size之外的任何属性,但您的.push尝试有一个具有is_available、qty和@987654336 的对象@。您的输出中是否真的期望这些属性?请澄清您的问题 -
对不起,我错误地输入了“红色”。顺便说一句,我得到了答案。感谢您的关心
标签: javascript vue.js lodash