Javascript将Array推送到Array但是连接起来

时间:2016-11-15 12:09:19

标签: javascript arrays

我正在尝试将数组(多次)推送到另一个数组中。我将多次推送尝试中的所有值作为单个数组,而不是数组数组。我已经尝试隐式推送数组(即jQuery('.class').each(function(index) { if($(this).text().split(' ').length > 1){ //get the first word var firstWord = $(this).text().split(' ')[0]; //wrap it with strike var replaceWord = "<strike>" + firstWord + "</strike>"; //create new string with span included var newString = $(this).html().replace(firstWord, replaceWord); //apply to the divs jQuery(this).html(newString); } }); ),显式创建一个新数组,然后推送新数组。这是代码的关键部分:

push([val1,val2]

从我看过的很多stackoverflow问题/答案中,我希望我的坐标数组看起来像这样:var coordinates=[]; ... for(i=0;i<6;i++) { ... for(var j=start;j<circum[i].length;j++) { var segmentCoords=[]; ... if(segmentFlag===false) { segmentCoords.push([i+1,segmentLength]); segmentFlag=true; } ... if(segmentFlag===true) { var tempArray=new Array(i+1,segmentLength); segmentCoords.push(tempArray); segmentLength+=sectorLength; coordinates.push(segmentCoords); segmentFlag===false; } ... } 。相反,它是[[val1, val2],[val3,val4],[val5,val6]]。如果我使用[val1,val2,val3,val4,val5,val6].concat(),那就是我所期望的。

有人可以解释为什么我的代码没有生成数组数组吗?

我在这里有完整的代码https://jsfiddle.net/Seytom/7xm9s4qr/,以防您想要查看更多内容。

2 个答案:

答案 0 :(得分:2)

你似乎被console.log愚弄了。注意这两个陈述之间的区别:

&#13;
&#13;
console.log( 'string ' + [[1,2],[3,4]] ); // string, '1,2,3,4'

console.log( 'string ', [[1,2],[3,4]] ); // string, [[1,2],[3,4]]
&#13;
&#13;
&#13;

因为您正在将数组强制转换为字符串,所以这就是结果。它与以下相同:

&#13;
&#13;
console.log( new Array([1,2],[3,4]).join(',') ); // 1,2,3,4
&#13;
&#13;
&#13;

它是您加入它们时所做的数组操作,无论它们是否嵌套。最好单独记录数组,以便在控制台中进行探索,这样就可以简单地打印字符串,然后将数组添加为第二个参数。 (控制台获取无限量的参数,并将它们作为一个语句打印出来 - 如果它的字符串更清晰,那么safari甚至会将第一个作为特殊类型打印出来。)

简而言之:push的行为完全符合预期,您的代码应该按预期工作,但打印到控制台似乎有点不尽如人意:)。

答案 1 :(得分:0)

使用Array.concat

var arrA = [0];
var arrB = [1, 2];
while (arrA.length < 10) {
  arrA = arrA.concat(arrB)
}
console.log(arrA)