2017-07-31 4 views
-1

のArrayにオブジェクト配列の比較:私は条件を含むオブジェクトの配列を持っていると私は、単純な配列の値に対してオブジェクトの配列を検索したり、比較しようとしていますJavascriptを

var myObjArr = [ {this: "someval", that: "anotherval" }, {this: "someval", that: "anotherval" }, {this: "someval", that: "anotherval" } ]; 

それから私は、結果の配列を持っています..

var newArrResults = [ "anotherval", "someval", "anotherval2" ]; 

結果配列newArrResultsの任意の文字列値に対してmyObjArrをチェックする必要があります。私はそれを多くの方法で試してきましたし、ほとんどの方法は不安定です。私が試した最初の方法はArrayObjectをループとのindexOfを探していました

for(var b = 0; b<myObjArr.length; b++){ 
    if(newArrResults.indexOf(myObjArr[b].this) !== -1 && newArrResults.indexOf(myObjArr[b].that) !== -1) { 
    // is unstable 
    // i need to know if there are exact matches in "this & that" 
} 

が、これは少し不安定のようです:私が試した何

。何かご意見は?助けて?正しい方向に私を導くアイデア?

+2

ですか? – Amit

+2

あなたのオブジェクト配列で変数名 'this'を変更する必要があります。 Javascriptの 'this'はキーワードであり、特定の意味を持っています – Vandesh

+0

オブジェクトとnewArrResults配列にはどのようなデータ型が格納されていますか? –

答えて

0
let found = myObjArr.filter((item)=>{ 
    return newArrResults.indexOf(item.this) > - 1 ||newArrResults.indexOf(item.that) > -1; 
}).length > 0 

「found」は、配列内にあるかどうかを示すブール値になります。あなたのコード内

+0

この結果から1つの結果が得られない... newArrResultの出力は典型的な配列です - 私はあなたのコンソールでこれを確認しました["this"、 "new"、 "that"] – MizAkita

+0

サンプルコードとそれは動作します。結果のために何をしたいですか?それはあなたが望むように思えるように真実/偽です。 console.log(found)は、見つかったかどうかを伝えます。 – chairmanmow

+0

私が必要とするのは、objArrayが任意の組み合わせで文字列アイテムを見つけることです。彼らは順番にそれらをチェックしているようだ。 – MizAkita

0

2つの問題 -
あなたはthis
2.閉じ中括弧「}」のような言語の予約語を使用しないでください。1.あなたのforループの中で行方不明になった

次のコードの作品あなたが望むもののために -

var myObjArr = [ {foo: "someval", bar: "anotherval" }, {foo: "someval", bar: "anotherval" }, {foo: "someval", bar: "anotherval" }, {foo:"someVal",bar:"noVal"}]; 

var newArrResults = [ "anotherval", "someval", "anotherval2" ]; 

for(var b = 0; b<myObjArr.length; b++){ 
    if(newArrResults.indexOf(myObjArr[b].foo) !== -1 && 
     newArrResults.indexOf(myObjArr[b].bar) !== -1) { 
    console.log("Exact match"); 
    //exact matches in "foo & bar" 
    } 
} 

はここで不安定であり、何Fiddle

+0

これはうまくいきません...スクリプトはちょうど私がそれを変更するとスティックします!==の代わりに!= – MizAkita

+0

'スティック'とはどういう意味ですか?あなたは提供されているフィドルのリンクを突き止めることができますか? – Vandesh

+0

私のコードは、あなたがフィドルに持っているものとまったく同じように見えますが、それは動作しません...私はそれを実行しようとしましたが、何もしません... – MizAkita

関連する問題