2010-12-13 13 views
1

別の配列の値にJSONオブジェクト/配列(myArrayとして表示)を並べ替えたい - MYSQLクエリMYSQL WHERE IN(1,2,3)に非常に近い。私はgreat answer by Nick Craverを1つのプロパティと値でソートする方法を知ることができましたが、私は他の配列から複数の値を使ってこれをどうやって行うことができますか?jQuery/JS:別の配列に基づいて配列をソートする?

は、ここに私のデータセットJSON配列です:

var myArray = [ 
{ 
    "id":"2", 
    "name":"My name", 
    "properties":{"prop1":"value1"} 
}]; 

そして、私は(フォームから直接来て、シリアル化された)ときにソートしたい配列:

var sortArray = [ { "prop1":"value1","prop2":"value2" }]; 

現在ソート機能は現在見ています(Nick Craver正例):

function filterDataset(property, value){ 
    var newArray = []; 

    for (var i = 0, l = myArray.length; i < l; i++) { 
     if (myArray[i].properties[property] === value) 
     newArray.push(myArray[i]); 
    }    
    return newArray; 
} 
+0

機能の小さなエラー - 今すぐ修正します。 – Industrial

+0

多分あなたの目的を明確にすべきです。あなたは配列の要素をソートしたいと思うようですが、指定された配列には1つの要素しかありません。 –

+0

こんにちは!配列には、読みやすいように項目が1つしかありません。私は、 'myArray'配列を、ユーザー500894が示唆しているように、プロパティの数が不明な' || '比較を実行しているかのように並べ替えたいです。 – Industrial

答えて

1

は、私はそれを修正するために管理方法は次のとおりです。

function filterDataset2(properties){ 
    var newArray = []; 

    for (var i = 0, l = dataset.length; i < l; i++) { 

     $.each(properties, function(){ 
      if (dataset[i].properties[this.name] === this.value) 
       newArray.push(myArray[i]);    
     }); 

    } 

    return newArray; 
} 
0

これはあなたが意味するものではないかもしれませんが、プロパティのリストがわかっている場合は、||あなたの比較?あなたは2つの性質を持っていると言う...

function filterDataset(property, value){ 
    var newArray = []; 

    for (var i = 0, l = myArray.length; i < l; i++) { 
     if ((dataset[i].egenskaper[property1] === value) || (dataset[i].egenskaper[property2] === value)) 
     newArray.push(myArray[i]); 
    }    
    return newArray; 
} 

そうでない場合は、ソート配列の長さは、プロパティは、問題のアレイ内で発見された場合はtrueを返しますarray.findタイプのメソッドを使用することができます不明な場合。 trueを返す場合は、その値を新しくソートされた配列にプッシュします。ここで

+0

こんにちは!それは私が 'OR' /' || 'の比較でフィルタリングしたいのですが、私の配列(現在シリアライズされています)のキーと値に基づいています... – Industrial

+0

助けてくれてありがとう - 正しい方向に私を指摘しました! – Industrial

関連する問題