2017-01-30 10 views
0

現在、クエリ文字列に基づいていくつかの値をソートしようとしています。このループで各targetを個別にターゲティングすることはできますが、アレイから正しく削除できないようです。 target.targetに一致する値をtargetListから削除するにはどうすればよいですか? 'サブオブジェクトが値と一致する配列からオブジェクトを削除します

targetList.forEach(function(target, key) { 
    var os = getParameterByName('os'); 

    if (os == "android") { 
     if (target.target.includes(":IOS")) { 
      targetList.splice(key, 1); 
     } 
    } else if (os == "ios") { 
     if (target.target.includes(":ANDROID")) { 
      targetList.splice(key, 1); 
     } 
    } 

    if (target.target.includes(":IOS")) { 
     target.target = schools[target.target.replace(":IOS", "").toLowerCase()] + " (iOS)" || target.target; 
    } 

    if (target.target.includes(":ANDROID")) { 
     target.target = schools[target.target.replace(":ANDROID", "").toLowerCase()] + " (Android)" || target.target; 
    } 

}); 

targetListこのような配列が含まれています

[ 
    { 
    "target": "t1", 
    "datapoints": [ 
     [ 
     51.0, 
     1483574400.0 
     ], 
     [ 
     54.0, 
     1485561600.0 
     ], 
     [ 
     54.0, 
     1485648000.0 
     ] 
    ] 
    }, 
    { 
    "target": "t2", 
    "datapoints": [ 
     [ 
     56.0, 
     1484265600.0 
     ], 
     [ 
     70.0, 
     1484352000.0 
     ], 
     [ 
     71.0, 
     1484438400.0 
     ], 
     [ 
     51.0, 
     1484611200.0 
     ] 
    ] 
    }, 
] 

私がしようとしていますどのようなターゲットは、特定の条件Iは、オブジェクト/配列を含む全体を削除したい.includes()と一致しているということです。

+0

'getParameterByNameは()'何をすべきかと返していますか? – charlietfl

+0

私の悪いことに、その関数は単にクエリ文字列の値を返します。 –

+1

問題を再現するデモを作成します。 – charlietfl

答えて

0

あなたのコードはうまく動作します。私は追加の処理を取り除いたスニペットを作成しました。あなたが既に何を求めているのかを示すためです。

target.targetをアレイから削除すると、その理由がありますか?他の場所のオブジェクトを参照していますか?

var targetList = [ 
 
    { 
 
    "target": "t1", 
 
    "datapoints": [ 
 
     [ 
 
     51.0, 
 
     1483574400.0 
 
     ], 
 
     [ 
 
     54.0, 
 
     1485561600.0 
 
     ], 
 
     [ 
 
     54.0, 
 
     1485648000.0 
 
     ] 
 
    ] 
 
    }, 
 
    { 
 
    "target": "t2", 
 
    "datapoints": [ 
 
     [ 
 
     56.0, 
 
     1484265600.0 
 
     ], 
 
     [ 
 
     70.0, 
 
     1484352000.0 
 
     ], 
 
     [ 
 
     71.0, 
 
     1484438400.0 
 
     ], 
 
     [ 
 
     51.0, 
 
     1484611200.0 
 
     ] 
 
    ] 
 
    }, 
 
]; 
 

 
targetList.forEach(function(target, key) { 
 
    if (target.target.includes("t2")) { 
 
    targetList.splice(key, 1); 
 
    } 
 

 

 
}); 
 
    
 
console.log(targetList);

+1

これはコメントでなければなりません – Alnitak

+1

@Alnitak私は同意しません:関連する部分だけを含む実行可能なスニペットを作成し、提供されたコードが少し切り捨てられたときに要求通りに動作することを示します。 – Schlaus

+1

"差異を見つけてください"という回答は役に立ちません。 – Alnitak

関連する問題