For循环打印只在javascript中的最后一个值数组

时间:2016-10-05 11:22:52

标签: javascript jquery

for (var i = 0; i < featureSet.features.length; i++) {
                 for (var f = 0, f1 = featureTracts.length; f < f1; f++) {

                     rows["Sensor"] = featureTracts[f].attributes.Sensor;
                     rows["Resolution"] = featureTracts[f].attributes.Resolution;
                     rows["Dtofparse"] = featureTracts[f].attributes.Dtofparse;//PATH_ROW
                     // alert(rows);
                 }

                 resosat1[i] = rows;

             }

我正在尝试打印resosat1 [i]数组中的所有值,但它只会占用最后一个值,所有值都会耗尽并仅更新数组的最后一个值

4 个答案:

答案 0 :(得分:2)

for (var i = 0; i < featureSet.features.length; i++) {
             var rowAaaray = [];
             for (var f = 0, f1 = featureTracts.length; f < f1; f++) {
                 var rows = {};
                 rows["Sensor"] = featureTracts[f].attributes.Sensor;
                 rows["Resolution"] = featureTracts[f].attributes.Resolution;
                 rows["Dtofparse"] = featureTracts[f].attributes.Dtofparse;//PATH_ROW
                 // alert(rows);
              rowAaaray.push(rows);
             }

             resosat1[i] = rowAaaray;

         }

 }

因为您正在维护一个变量并将其覆盖在循环中。因此,您将只获得最后一个覆盖对象。

答案 1 :(得分:0)

我同意评论中的那个人。尝试:

for (var i = 0; i < featureSet.features.length; i++) {
                 for (var f = 0, f1 = featureTracts.length; f < f1; f++) {

                     rows["Sensor"] = featureTracts[f].attributes.Sensor;
                     rows["Resolution"] = featureTracts[f].attributes.Resolution;
                     rows["Dtofparse"] = featureTracts[f].attributes.Dtofparse;//PATH_ROW
                     resosat1[f] = rows; <======== THIS WILL STORE THE VALUE OF EACH ROW CREATED
                 }

                 <==//TRY STORING THE resosat1 array In another array here instead. 
                   //eg. arrayEx[i]=resosat1
                   //Alternatively, you could use a 2D Array eg. arrayEx[i][f]

             }

希望这可以帮助你。

答案 2 :(得分:0)

尝试这个..

      for (var i = 0; i < featureSet.features.length; i++) {
         var arr = []; // create array 
         for (var f = 0, f1 = featureTracts.length; f < f1; f++) {
             var rows = {};
             rows["Sensor"] = featureTracts[f].attributes.Sensor;
             rows["Resolution"] = featureTracts[f].attributes.Resolution;
             rows["Dtofparse"] = featureTracts[f].attributes.Dtofparse;//PATH_ROW
             // alert(rows);
          arr.push(rows);
         }

         resosat1[i] = arr;

     }
  }

答案 3 :(得分:0)

未宣布

(至少在您的代码段中)。

另一方面,正如某些建议的那样,放置var rows = {}将解决您的问题,因为它每次都会创建新对象。但是,如果您的javascript版本接受它,最好用 let 声明它,因为这样,您将真正创建新的新变量(在块范围内)

声明外部块中的行不会解决您的问题,因为您将在整个循环期间分配相同的对象。