使用map()和get()的逗号分隔数组

时间:2015-10-15 16:05:34

标签: jquery

我将两个单独的原始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>

2 个答案:

答案 0 :(得分:0)

jQuery&#39; s .html(),当传递一个数组时,自动连接没有分隔符的项目(即空字符串的分隔符)。因此,对于B,您可以得到ABCDE。使用A虽然,您有一个嵌套数组。您映射并获取一个数组,然后将其粘贴到另一个数组([$().get()])中。当jQuery结合这个数组的项目时,只有一个:内部数组。然后JavaScript使用.toString()加入这个内部数组,它在项之间放置逗号。因此,您将获得逗号分隔的数组。

比较

&#13;
&#13;
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;
&#13;
&#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"