2017-11-20 1 views
0

私はreact-nativeとreduxで検索関数を構築しています。私のアクションクリエイターでは、Firebaseからjsonを返送しています。次に、jsonを配列に変換します。入れ子配列内の値に応じて多次元配列を返したい

const myObj = snapshot.val(); //json 
const array1 = Object.entries(myObj).map(function(key) { 
    return (key); 
    }); 

このようにして、array1からfilter()することができます。

ただし、array1は多次元配列です。したがって、このfilter()はネストされた配列にアクセスできません。

const copy1 = []; 
    const len = array1.length; 
    for (let i = 0; i < len; i++) { 
    copy1.push(array1[i][1]); 
    } 

をしかし、私は、インデックスがFirebaseによって作成されたユニークなIDであることを

array1[i][0]. 

へのアクセスを失う:私はそうのような配列COPY1を作成する場合は、アクセスする必要があります。私は自分のデータがすべて混同しないようにする必要があります。

配列の特定のインデックス(array1 [i] [1])を.filter()することはできますが、その特定のインデックスが基準に一致する完全な配列を返す方法はありますか?

(array1 [i] where array1 [i][1] matches the user input(element)) 

私は返すことができない。

array1 [i][j] 

それはエラーを引き起こすよう配列1 [i]が[0]は、単なる文字列ではなくオブジェクト(キーと値のペア)からです。

ご協力いただきありがとうございます。 filter()

変更で

答えて

0

return (value[specifiedIndex].indexOf(element) !== -1); 

OR

return value[specifiedIndex].includes(element); 
+0

charlietflあなたはロックスターです!このコードを使用すると、Firebase IDにアクセスできます:const array2 = array1.filter( (value)=> { const element = "-KzPj2RoB0CatW_vpfwq";for(let i = 0; i

+0

'value [specifiedIndex] .make.includes(element)'を試してください。これは、検索してフィルタリングするプロパティ名を知っていることを前提としています – charlietfl

0

return (value.indexOf(element) !== -1); 

はここで働いていたものです:

const array2 = array1.filter(
    (value) => { 
     const element = "John Deere"; 
     for (let i = 0; i < len; i++) { 
    return (value[1].make.indexOf(element) !== -1); 
     } 
    }); 

もちろん、「make」キーを使用するだけです。しかし、私はそれが可能であると確信している||より多くのキーを含めるフィルタ関数内の演算子。