2016-12-25 15 views
-1

私は文字列var allEmojis = [dog, toucan, flamingo, lion, tiger, duck, elephant, zebra]の配列とmongooseから取得したオブジェクトの配列を表示しています。オブジェクト配列内の各オブジェクトは、allEmojis配列からフィルタリングされた属性emojiを持っています。文字列の配列からオブジェクトの配列をフィルタリング

enter image description here

(以下オブジェクトの配列がある)私はそうのような配列をフィルタリングしたいと思います:「ArrayOfObjects」

var JohnsEmojis = allEmojis.filter(function(emoji) { 
    return !ArrayOfObjects.includes(emoji) /*=>>> where the object in ArrayOfObjects 
    containing the emoji has an id of John not yoyoyo (yes i know, dumb name); */ 
    }) 

var yoyoyoEmojis = allEmojis.filter(function(emoji) { 
    return !ArrayOfObjects.includes(emoji) /*=>>> where the object in ArrayOfObjects 
    containing the emoji has an id of yoyoyo not John; */ 
    }) 

はのは、オブジェクトの配列が単純であると仮定しましょう

私のコードは2つのカウントで失敗します。文字列の配列を持つオブジェクトの配列に対してincludeを使用することはできません。また、これがうまくいったと仮定すると、指定されたidを持つオブジェクトに基づいてフィルタリングしません。私はこれを行う最も効率的な方法を見つけることができたと思っていました。

+0

あなたは達成しようとしていることを具体的かつ言葉で記述できますか?すべてのEmojiをフィルタリングしたいのですか?他の配列にその絵文字が含まれているかどうかidsとは何が関係していますか? – pvg

+0

私はすべての絵文字を含む配列を持っています。私はidとemojiを持つ各要素を持つオブジェクトの配列を持っています。上の画像では、ジョンがemojis flamingoとduckを持っているのを見ることができます。だから私はヨハネのemojisからすべてのemojisをフィルタリングするemojisの配列が必要です。だから、すべてのイモジ= [犬、toucan、フラミンゴ、ライオン、虎、アヒル、ゾウ、ゼブラ]、ジョンのemojis = [フラミンゴ、アヒル]。フィルタリングは[犬、ツカ、ライオン、トラ、ゾウ、ゼブラ]にする必要があります。同じことがヨーヨーの要素にも当てはまります。 yoyoyoが持っているemojisからすべてのemojisをフィルタリングするyoyoyoの配列が必要です。 – Ryan

答えて

1

あなたは、これは問題ではありませんし、allEmojisが本当にすべてのオブジェクトの下にarrayOfObjectsにある文字列が含まれている場合は、文字列の

var allEmojis = [dog, toucan, flamingo, lion, tiger, duck, elephant, zebra] 

アレイは

var allEmojis = ["dog", "toucan", "flamingo", "lion", "tiger", "duck", "elephant", "zebra"] 

だろうあなたのallEmojis引用符なしに書きましたキーobject.emojiを入力すると、allEmojisarrayOfObjectsの交差をフィルタリングできます。

var filtered = allEmojis.filter(function(e) { 
    return !!arrayOfObjects.find(function(o) { 
     return o.emoji === e; 
    }); 
}; 

また、おそらくより良い性能を持っている

var filtered = arrayOfObjects 
    .filter(function(o) { return allEmojis.includes(o.emoji) }) 
    .map(function(o) { return o.emoji }); // convert objects to strings 

としてそれを書くことができます。

関連する問題