2017-05-08 27 views
0

这里是我当前的代码:JavaScript的双回路`for`×2个阵列

let total = 4; 
let total_attr = 2; 

for (let i = 0; i < total; ++i) { 

    let name = result.Item[i].attr[0].Name[0], 
     value = result.Item[i].attr[0].Value[0] 

    let name2 = result.Item[i].attr[1].Name[0], 
     value2 = result.Item[i].attr[1].Value[0] 

    let return_value = [{ 
     [name]: value, 
     [name2]: value2 
    }]; 

    result.push(function() {return {return_value};}); 
} 

现在我手动定义.attr[0],我想使它像循环这个.attr[k],并找不出?谢谢。

我的结果:

 "return_value": [{ 
       "Size": "5", 
       "Color": "Green"} 
     ] 
     "return_value": [{ 
       "Size": "8", 
       "Color": "Green"} 
     ] 
     "return_value": [{ 
       "Size": "5", 
       "Color": "Pink"} 
     ] 
     "return_value": [{ 
       "Size": "8", 
       "Color": "Pink"} 
     ] 

遗憾的混乱。

+3

你是什么意思_make它在loop_里面? – Lixus

+0

向我们展示“结果”的外观以及期望的结果。用'..'修正错字。 – Bergi

+0

在开始循环之前,“结果”是什么样的? – HoofHarted

回答

0

我在这里提出几个假设,但我想这大概是接近你以后:

// results array 
let result = []; 

// for each item in results.Item[] array 
for (let i = 0; i < result.Item.length; i++) { 
    let item = result.Item[i]; 

    // for each item results.Item[i].attr[] array 
    for (let j = 0; j < item.attr.length; j++) { 
     let attr = item.attr[j]; 

     result.push({ 
      // NB: are these definitely array references? 

      // if not, just use: 
      // name: attr.Name, 
      // value: attr.Value 

      name: attr.Name[0], 
      value: attr.Value[0]    
     }); 
    } 

} 
0

咦?一个推测。第一个循环遍历初始数组。第二个循环遍历每个对象内的辅助数组。次循环当前使用名称数组作为长度。

var return_value; 
var array = [{ 
    name: ['jack', 'david'], 
    value: [1,2] 
    }, 
    { 
    name: ['leo', 'adam'], 
    value: [1,2] 
    } 
] 

for(var i = 0; i < array.length; i++) { 
    for(var j = 0; j < array[i].name.length; j++) { 
     return_value.push({ 
      name: array[i].name[j]; 
      value: array[i].value[j] 
     }) 
    } 
}