2017-10-19 16 views
0

私は、その中に<A>のタグ要素を持つjQueryラッパーから始めています。私が欲しい結果は次のとおりです。オブジェクトの配列へのLodashのマップ

[{href: "http://...", text: "The inner text"}, {...}, ...] 

は、これまで私はこれを得た:

の代わりに動作しますが、そこより良い方法だと、内側のtextプロパティが「のinnerText」と命名されたように見える ​​

"テキスト"。そして、私は要素のinnerTextがほしいと思うだけでなく、.text()だけでなく、出力(改行、空白、...)をクリーンアップしないようにします。

答えて

1

ES6 destructuringassign text to a new variableを使用できます。今、あなたはhrefで新しいオブジェクトを作成することができ、かつshorthand property namesを使用してtext変数:

const result = $('a').map((k, { href, innerText: text }) => ({ href, text })).toArray(); 
 

 
console.log(result);
<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>

+0

I:あなたはまた、jQueryの'.map()'を使用することができます

const links = $('a').toArray(); const result = links.map(({ href, innerText: text }) => ({ href, text })); console.log(result);
<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>

Babelを使ってコンパイルしたES6、 d 'map'文をコンパイルしてバグがあると思います。' return pubs.map(function(_ref){var href = _ref.href、text = _ref.innerText; return {href:href、text:text}; }}; '' _ref'は 'map'メソッドのインデックス引数であり、値ではありません。どのように解決するかについての任意のアイデア? – Koen

+1

1番目のパラメータはArray#mapの値です。 jQueryオブジェクトで '.toArray()'を使用しましたか? –

+0

右!私は多くの連鎖を使用するフレームワークを使用しており、各ステップで要素の配列をjQueryラッパーに再変換しているので、私の 'toArray'呼び出しは効果がありませんでした。 – Koen

関連する問題