我从一个jQuery包装器开始,其中包含许多<A>
- 标签元素。我想要的结果是:
[{href: "http://...", text: "The inner text"}, {...}, ...]
到目前为止,我得到了这个:
_.map($pubs, ($pub) => _.pick($pub, 'href', 'innerText'))
这样可行,但看起来有更好的方法,内部文本属性命名为&#34; innerText&#34;而不是&#34; text&#34;。我确实想要innerText
元素,而不仅仅是.text()
,因为它不会清理输出(换行符,空格,......)。
答案 0 :(得分:1)
您可以使用ES6 destructuring和assign text
to a new variable。现在,您可以使用shorthand property names创建包含href
和text
变量的新对象:
const links = $('a').toArray();
const result = links.map(({ href, innerText: text }) => ({ href, text }));
console.log(result);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="http://www.google.com">Google</a>
<a href="http://www.facebook.com">Facebook</a>
<a href="http://www.apple.com">Apple</a>
&#13;
您还可以使用jQuery&#39; '.map()`:
const result = $('a').map((k, { href, innerText: text }) => ({ href, text })).toArray();
console.log(result);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="http://www.google.com">Google</a>
<a href="http://www.facebook.com">Facebook</a>
<a href="http://www.apple.com">Apple</a>
&#13;