我将两个单独的原始Javascript数组输出到两个单独的div。一个是显示元素以逗号分隔,另一个不是。任何人都可以解释这里发生的事情之间的区别吗?为什么用逗号输出一个结果?
这是jsfiddle - https://jsfiddle.net/ahgcue4w/2/
$(document).ready(function() {
var a = [$('li').map(function() { return $(this).text(); }).get()];
$('#results1').html(a);
var b = ['A', 'B', 'C', 'D', 'E'];
$('#results2').html(b);
});
<ul>
<li>Chicago</li>
<li>Seattle</li>
<li>San Diego</li>
<li>Austin</li>
<li>Denver</li>
</ul>
<div id="results1"></div>
<br />
<div id="results2"></div>
答案 0 :(得分:0)
jQuery&#39; s .html()
,当传递一个数组时,自动连接没有分隔符的项目(即空字符串的分隔符)。因此,对于B,您可以得到ABCDE
。使用A虽然,您有一个嵌套数组。您映射并获取一个数组,然后将其粘贴到另一个数组([$().get()]
)中。当jQuery结合这个数组的项目时,只有一个:内部数组。然后JavaScript使用.toString()
加入这个内部数组,它在项之间放置逗号。因此,您将获得逗号分隔的数组。
比较
document.writeln('Single nesting:');
document.writeln(['A','B','C','D','E'].join(''));
document.writeln('Double nesting:');
document.writeln([['A','B','C','D','E']].join(''));
// still waiting for a snippet console...
// http://meta.stackexchange.com/q/239706/259693
&#13;
答案 1 :(得分:-2)
当您将数组传递给jQuery&#34; html&#34;方法,调用Array.prototype.toString方法。
试一试:
["123", "anc"].toString()
您可以使用&#34; join&#34;并指定所需的分隔符来控制此默认行为。
// Join all element by a white-space
["123", "anc"].join(" ") // --> "123 anc"
// Join all element by a dash
["123", "anc"].join("-") // --> "123-anc"