我正在尝试将数组(多次)推送到另一个数组中。我将多次推送尝试中的所有值作为单个数组,而不是数组数组。我已经尝试隐式推送数组(即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/,以防您想要查看更多内容。
答案 0 :(得分:2)
你似乎被console.log
愚弄了。注意这两个陈述之间的区别:
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;
因为您正在将数组强制转换为字符串,所以这就是结果。它与以下相同:
console.log( new Array([1,2],[3,4]).join(',') ); // 1,2,3,4
&#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)