迭代嵌套数组

时间:2017-02-25 12:57:38

标签: javascript jquery arrays

我有一个包含3个项目的嵌套数组的数组,如下所示:

arr = [['first', 'second', 'third'],['one', 'two', 'three']];
$.each(arr, function (a, b, c) {
    console.log(a, b, c);
 });

当我使用上面的代码迭代它们时,它是console.logs:

0 Array [ "first", "second", "third" ] undefined  
1 Array [ "one", "two", "three" ] undefined

如何才能将其记录为:

'first', 'second', 'third'
'one', 'two', 'three'

4 个答案:

答案 0 :(得分:1)

像这样使用forEach

arr.forEach(function(subarr, index) {        // loop over the array arr
    subarr.forEach(function(e, subindex) {   // loop over the sub-arrays of the array arr
        console.log(e);
    });
});

如果您想使用jQuery.each,请使用:

$.each(arr, function(index, subarr) {        // loop over the array arr
    $.each(subarr, function(subindex, e) {   // loop over the sub-arrays of the array arr
       console.log(e);
    });
});

期望的输出:

var arr = [['first', 'second', 'third'],['one', 'two', 'three']];
arr.forEach(function(subarr, index) {
  var html = '<h1>' + subarr[0] + '</h1>';
  html +=     '<p>' + subarr[1] + '</p>';
  html +=  '<span>' + subarr[2] + '</span>';
  console.log(html);
  //div.append(html);
});

答案 1 :(得分:1)

$.each()中,第一个参数是索引,第二个参数是值,因此您希望console.log b

&#13;
&#13;
arr = [
  ['first', 'second', 'third'],
  ['one', 'two', 'three']
];
$.each(arr, function(a, b, c) {
  console.log(b);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

如果你想从子数组中获取每个元素,你需要嵌套循环。

&#13;
&#13;
arr = [['first', 'second', 'third'],['one', 'two', 'three']];

$.each(arr, function(a, b) {
  $.each(b, function(i, e) {
    console.log(e);
  });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

使用ES6,你也可以写这个。

&#13;
&#13;
var arr = [['first', 'second', 'third'],['one', 'two', 'three']];
[].concat(...arr).forEach(e => console.log(e))
&#13;
&#13;
&#13;

您可以使用数组解构为数组中的每个项创建单独的变量。

&#13;
&#13;
var arr = [['first', 'second', 'third'],['one', 'two', 'three']];
arr.forEach(function(e) {
  var [a, b, c] = e;
  $('body').append('<h2>' + a + '</h2>' + '<p>' + b + '</p>' + '<span>' + c + '</span>' ) 
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

尝试使用嵌套数组的join方法:

arr = [['first', 'second', 'third'],['one', 'two', 'three']];
$.each(arr, function (i, a) {
    console.log(a.join(", "));
 });

答案 3 :(得分:0)

函数(a,b,c)=&gt;一个用于索引,一个用于项目,而c则没有任何未定义。

如果您只想迭代数组,

arr.forEach(function(item){
   console.log(item); // this will print inner arrays...
   // as in your case item is array, you can access their values using item[0], item [1]...
});

在javascript中,第一个参数是item,第二个是index,但在jQuery中,第一个参数是index,第二个是item。