質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Underscore.js

Underscore.jsは、JavaScriptのためのユーティリティライブラリです。JavaScriptの関数・配列、オブジェクトを扱う際に度々発生する処理がメソッドとしてまとめられています。他のライブラリに依存しないため、稼働中のアプリケーションにも導入可能です。

Q&A

解決済

1回答

2327閲覧

[配列の中から複数の結果を取得したい]

star24star

総合スコア115

Underscore.js

Underscore.jsは、JavaScriptのためのユーティリティライブラリです。JavaScriptの関数・配列、オブジェクトを扱う際に度々発生する処理がメソッドとしてまとめられています。他のライブラリに依存しないため、稼働中のアプリケーションにも導入可能です。

0グッド

0クリップ

投稿2016/02/01 05:20

編集2016/02/01 06:02

[配列の中から複数の結果を取得したい]

javascript

1var result = 2 [ 3 "10", 4 "40" 5 ]; 6 7var array = 8 [ 9 {"id":1, "name":"aaa", "num":10, "st":"AA"}, 10 {"id":2, "name":"iii", "num":20, "st":"BB"}, 11 {"id":3, "name":"uuu", "num":30, "st":"CC"}, 12 {"id":4, "name":"eee", "num":40, "st":"DD"} 13 ];

【やりたいこと】
arrayという配列の中からnumがresultの結果を取得したい

【理想の取得結果】

{"id":1, "name":"aaa", "num":10, "st":"AA"}, {"id":4, "name":"eee", "num":40, "st":"DD"}

【考えているやり方】
_.mapでresultをひとレコードずつ取得
・arrayの中から_.whereで探し出す
・取得結果を新しい配列へ格納

javascript

1 2var newArray = _.map(result, function(a){ 3 4 console.info(a); 5 // 10 6 // 40 7 8 _.where(array,{id:+a}); 9 console.info(_.where(array,{id:+a})); 10 // 1と4の配列データが[Object]で取得 11 // ここまでは理想の取得結果 12 13}); 14 15console.info(newArray); 16// ["10", "40"] 17// オブジェクト全てを取得したいのに取得できない 18

使用言語:Underscore.js

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんな感じでどうでしょうか。
resultarrayで型が違っていたので、String(item.num)で文字列として比較するようにしています。

JavaScript

1var newArray = _.filter(array, function(record) { 2 return _.contains(result, String(record.num)); 3});

投稿2016/02/01 06:42

notable

総合スコア415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

star24star

2016/02/01 07:06

有難うございます!ひとまずやりたいことが出来ました! >> resultとarrayで型が違っていたので 取得(比較)出来なかった理由の一つに型の違いがあったのですね。 配列なのでとにかく数値に変換しなくてはならないものだとばかり思っていました。 _.filter -> 条件にあう値を全部配列として返す _.contains -> 配列内に指定した値が含まれているかチェックしてtrue, falseを返す ・arrayの配列をrecordへいちレコードずつ代入 ・resultの中にrecord.numが含まれていればtrueを返す もし宜しければ質問にお答えいただけると幸いでございます。 ・trueをかえすだけで何故、配列内のデータがちゃんと取得できるのでしょうか? (trueを返すことでfilterの役割が果たされる??)
notable

2016/02/01 07:30

> ・trueをかえすだけで何故、配列内のデータがちゃんと取得できるのでしょうか? 記載いただいた内容の通りですね。 filter()が配列の各行を返り値(配列)に含めるかどうかは、 第2引数の関数の返り値がtrueかfalseで判断します。 trueになった行のみ配列として返してくれます。 以下、日本語訳しているページがあったのでURLを記載します。 ■contains http://www.elder-flower.com/blog/2015/04/contains.html ■filter http://www.elder-flower.com/blog/2015/04/filter.html
star24star

2016/02/01 07:39 編集

ご回答下さいましてありがとうございます! true、falseの使い方も分かってきました また、自分でもUnderscoreのサイトを色々調べてみたのですがご教示して頂いたサイトは初めてみました...。今後の参考にさせていただきます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問