jQuery和map提供了奇怪的额外数据

时间:2017-09-02 02:40:36

标签: javascript jquery dictionary

这是我的html:

<!doctype html>
<html lang="en">
 <head>
  <script type="text/javascript" src="http://code.jquery.com/jquery-2.1.0.min.js"></script>
 </head>
 <body>
  <ul>
    <li>one</li>
    <li>two</li>
    <li>three</li>
  </ul>  
 </body>
</html>

我只是想得到李的文字:

$('li').map((i, x) => $(x).text())
// (3) ["one", "two", "three", prevObject: o.fn.init(3), context: document]

我觉得应该有一个简单的方法来做到这一点,而不是在最后得到所有额外的垃圾。

编辑:有关li标签的html已修复。问题不在于糟糕的HTML。

2 个答案:

答案 0 :(得分:2)

最后必须使用get(),否则你最终得到一个jQuery对象,因为jQuery的$.fn.map用于映射元素,而不是文本。

var arr = $('li').map((i, x) => $(x).text()).get();

console.log(arr)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<ul>
  <li>one</li>
  <li>two</li>
  <li>three</li>
</ul>

答案 1 :(得分:0)

这是因为没有使用</li>

&#13;
&#13;
let data = $('li').map((i, x) => $(x).text()).get();
console.log(data);
&#13;
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<html>
 <body>
  <ul>
    <li>one</li>
    <li>two</li>
    <li>three</li>
  </ul>  
 </body>
</html>
&#13;
&#13;
&#13;