Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.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_Vue.js_Lodash - Fatal编程技术网

Javascript 根据更改的属性数创建对象数组

Javascript 根据更改的属性数创建对象数组,javascript,vue.js,lodash,Javascript,Vue.js,Lodash,我想根据类别的属性数来处理数组 我使用可用的属性创建了一个数组(array_a),并根据属性(array_颜色、array_大小)对该数组值进行分组。例如,现在我有两个数组“array\u colors”和“array\u size”,所以在我的代码中,我循环它们并创建了一个对象数组(array\u b)。 但我的问题是我想处理动态数量的属性 var array_a = [ { "color":{ "id":2, "name":"Green" } },

我想根据类别的属性数来处理数组

我使用可用的属性创建了一个数组(array_a),并根据属性(array_颜色、array_大小)对该数组值进行分组。例如,现在我有两个数组“array\u colors”和“array\u size”,所以在我的代码中,我循环它们并创建了一个对象数组(array\u 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"
      }
   }
]
var数组_a=[
{
“颜色”:{
“id”:2,
“名称”:“绿色”
}
},
{
“颜色”:{
“id”:3,
“名称”:“黄色”
}
},
{
“尺寸”:{
“id”:5,
“名称”:“16”
}
},
{
“尺寸”:{
“id”:6,
“名称”:“17”
}
},
{
“尺寸”:{
“id”:7,
“名称”:“18”
}
}
];
数组颜色=数组过滤器(函数(myObject){
返回myObject.hasOwnProperty('color');
});
数组大小=数组过滤器(函数(myObject){
返回myObject.hasOwnProperty('size');
});
数组_b=[];
对于(var i=0;i
我的预期数组如上所述。我希望动态处理颜色、大小等属性。

使用可以将属性合并到单个对象中,属性名称作为键,每个键都有一个值数组。 然后使用(或:

const数组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”};
const getAllCombinations=\流([
arr=>.\uu.mergeWith({},…arr,(o,s)=>.\iArray(o)?[…o,s.name]:[s.name]),
道具=>\减少(道具,(r,值,k)=>
_.我是空的(r)?
values.map(v=>({
_是否可用:正确,
数量:0,
价格:0,,
[k] :v,
})) :
_.flatMap(r,o=>values.map(v=>({
……哦,
[k] :v
}))), [])
]);
log(getAllCombinations(array_a));

您确定这是您的预期输出吗?
输入中没有“红色”
(而且您要推送的对象中似乎没有很多属性)对不起,我不明白您的意思,您说您的预期输出是
数组b=[{'color':'red','size':16},{'color':'red','size':17},{'color':'green','size':16},{'color':'green','size':17}]
,但是
“颜色”:“红色”
从哪里来?
“红色”
不是脚本中的任何其他地方,为什么它会神奇地出现在输出中?另外,
绿色
在您的输入中是大写的,在将其转换为
数组
时,您是否希望在颜色上调用
小写
lso不包含除
颜色
大小
以外的任何属性,但您的
.push
尝试具有一个对象,该对象具有
可用
数量
价格
。您的输出中是否实际需要这些属性?请澄清您的问题抱歉,我错误地将“红色”放在谢谢你的体贴。不用客气:)别忘了。