我已按照以下方式构建了我的数组。
var myArray = [];
for(var i = 0; i < data.length; i++)
{
var product = data[i][0];
var size = data[i][1];
myArray.push({product:product, value:size})
}
如何构建data
超出了范围。当我遍历myArray
时,我在console.log中得到以下结果。
for(var i = 0; i < myArray.length; i++)
{
var product = myArray[i].product;
var size = myArray[i].value;
console.log(product + ' => ' + size);
}
Shoe A => S
Shoe A => M
Shoe B => XS
Shoe B => S
Shoe B => M
Shoe C => M
Shoe C => LG
Shoe D => S
Shoe D => M
Shoe D => LG
Shoe D => XL
如何获得以下结果?
Shoe A => [S, M]
Shoe B => [XS, S, M]
Shoe C => [M, LG]
Shoe D => [S, M, LG, XL]
我倾向于使用AJAX将myArray
发布到PHP处理程序。
答案 0 :(得分:2)
要在单循环中获得所需的输出:
鞋A =&gt; [S,M]
鞋B =&gt; [XS,S,M]
鞋C =&gt; [M,LG]
鞋D =&gt; [S,M,LG,XL]
您可以尝试此解决方案。使用哈希而不是数组。
var myArray = {};
for(var i = 0; i < data.length; i++)
{
var product = data[i][0];
var size = data[i][1];
if(myArray[product] === undefined) {
myArray[product] = []
}
myArray[product].push(size)
}
答案 1 :(得分:0)
您应该可以使用Array.reduce()
将每个值添加到新的Object
:
[
{product:'shoe a', value:'L'},
{product:'shoe b', value:'M'},
{product:'shoe b', value:'S'}
].reduce(function(memo, item) {
var arr = memo[item.product] || [];
arr.push(item.value);
memo[item.product] = arr;
return memo
}, {})
答案 2 :(得分:0)
我认为你想建立一个这样的结构:
var oData = {
A : [Some Sizes],
B : [Some Sizes] ...
}
其中A和B是您的产品。因此,当您遍历初始数据时,您需要:
var sSize = "size you want to add";
if(oData[A] === undefined){
oData.A = [sSize];
}else{
oData[A].push(sSize);
}
答案 3 :(得分:0)
你的输出数组列表应该有这样的对象{name:“productName”,size:[{“productSize”}]
看一下例子,aaa是输出数组
var aaa = [];
var names = [];
for(var i = 0; i < myArray.length; i++)
{
if(names.indexOf(myArray[i].product)>-1){
for(var j=0; j< aaa.length; j++){
if(aaa[j].name == myArray[i].product){
aaa[j].size.push(myArray[i].value)
}
}
}
else{
var ppp = {};
ppp.name = "";
ppp.size = [];
ppp.name = myArray[i].product;
ppp.size.push(myArray[i].value);
names.push(ppp.name);
aaa.push(ppp);
}
}
for(var i=0; i<aaa.length; i++ ){
console.log(aaa[i]);
}