显示重复值的多维数组

时间:2015-07-24 14:11:11

标签: javascript jquery

我使用循环

向多维数组添加值
var leg_array = {};
var enc_array = [];

for (var c = 0; c < result.routes[0].legs.length; c++) {
    leg_array[c] = {};

    for (var b = 0; b < result.routes[0].legs[c].steps.length; b++) {
        //var lat_lngs = result.routes[0].legs[c].steps[b].encoded_lat_lngs;  //encoded polyline representation
        var start_location_A = result.routes[0].legs[c].steps[b].start_location.A;
        var start_location_F = result.routes[0].legs[c].steps[b].start_location.F;

        var end_location_A = result.routes[0].legs[c].steps[b].end_location.A;
        var end_location_F = result.routes[0].legs[c].steps[b].end_location.F;



        enc_array[b] = start_location_A + "," + start_location_F + ":" + end_location_A + "," + end_location_F;
        leg_array[c] = enc_array;

    }
}

console.log(leg_array);

当我检查控制台日志时,多维数组第一级中的数组是相同的。

我该如何解决这个问题?每enc_array leg_array的值都重复 例如leg_array[0] = enc_array, leg_array[1] = enc_array

当值不同时,

enc_array是相同的。

1 个答案:

答案 0 :(得分:0)

您多次引用同一个数组。如果要为每个leg_array [c]值创建不同的数组,请改用Array.prototype.slice方法:

leg_array[c] = enc_array.slice()

这将创建一个新的enc_array副本(以其当前形式存储)以存储在leg_array [c]中。

当然,如果你在当前位置这样做,它会多次设置相同的值(因为它在循环内)。将它移动到外部for循环内部可能会得到你想要的结果。