我使用循环
向多维数组添加值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
是相同的。
答案 0 :(得分:0)
您多次引用同一个数组。如果要为每个leg_array [c]值创建不同的数组,请改用Array.prototype.slice方法:
leg_array[c] = enc_array.slice()
这将创建一个新的enc_array副本(以其当前形式存储)以存储在leg_array [c]中。
当然,如果你在当前位置这样做,它会多次设置相同的值(因为它在循环内)。将它移动到外部for循环内部可能会得到你想要的结果。