如何在另一个数组JavaScript中循环索引数组

时间:2018-07-17 14:31:26

标签: javascript arrays

我有一些这样的JavaScript代码:

<script>
  var nama_titik = ["titik1", "titik2"];
  var lat = ["-7.0732534", "-7.0737645"];
  var lon = ["110.4111171", "110.4130483"];
  var locations = [
    [nama_titik[0], lat[0], lon[0]]
  ];

  document.getElementById("demo").innerHTML = locations;
</script>

如何在location中循环索引数组,所以我没有写这样的代码:

var locations = [
  [nama_titik[0], lat[0], lon[0]],
  [nama_titik[1], lat[1], lon[1]],
  [nama_titik[2], lat[2], lon[2]],
];

3 个答案:

答案 0 :(得分:1)

如果我理解得很好,这就是您要寻找的-

var locations = [];
for (var i = 0; i < nama_titik.length; i++) {
    locations.push([ nama_titik[i], lat[i], lon[i] ])
}

答案 1 :(得分:0)

您可以对任何数组使用循环,以从各自的索引中获取值,并在locations变量中创建一个或多个数组。您还可以检查所有三个数组的长度,以防止任何运行时错误。

var nama_titik = ["titik1","titik2"];
var lat = ["-7.0732534","-7.0737645"];
var lon = ["110.4111171","110.4130483"];
var locations = [];
if(nama_titik.length === lat.length && lat.length === lon.length){
  for(var i=0; i<nama_titik.length; i++){
    var tempArr = [];
    tempArr.push(nama_titik[i]);
    tempArr.push(lat[i]);
    tempArr.push(lon[i]);
    locations.push(tempArr);
  }
  console.log(locations);
  document.getElementById("demo").innerHTML = locations;
} else{
  console.log('Incorrect data');
}
<div id ='demo'></div>

答案 2 :(得分:0)

解决此类问题的一种通用方法通常是基于Array.reduce ...

var nama_titik = ["titik1", "titik2", "foo"];
var lat = ["-7.0732534", "-7.0737645", "bar"];
var lon = ["110.4111171", "110.4130483", "baz"];

var locations = [
  [ nama_titik[0], lat[0], lon[0] ],
  [ nama_titik[1], lat[1], lon[1] ]
];

console.log('Array.from(locations) ... by hand : ', Array.from(locations));

function mapFromManyLists(collector, item, idx) {
  var vector = [item];

  collector.lists.forEach(function (list) {
    vector.push(list[idx]);
  });
  collector.list.push(vector);

  return collector;
}

locations = nama_titik.reduce(mapFromManyLists, {

  lists:  [lat, lon/*, as, many, lists, as, one, needs*/],
  list:   []

}).list;

console.log('Array.from(locations) ... by generic function : ', Array.from(locations));
.as-console-wrapper { max-height: 100%!important; top: 0; }