2016-06-24 6 views
1

私は2つの時間列の配列を持っています。 arr2ですでに表示されているarr1の要素を削除したい。配列をスライスする方法JavaScript/Jqueryの別の配列に既に存在する要素

これらは私ARRYです:

arr1 = ["05:30", "05:45", "06:00", "06:15", "06:30", "06:45", "07:00", "07:15", "07:30", "07:45", "08:00", "08:15", "08:30", "08:45", "09:00", "09:15", "09:30", "09:45", "10:00", "10:15", "10:30", "10:45", "11:00", "11:15", "11:30", "11:45", "12:00", "12:15", "12:30", "12:45", "13:00", "13:15", "13:30", "13:45", "14:00", "14:15", "14:30", "14:45", "15:00", "15:15", "15:30", "15:45", "16:00", "16:15", "16:30", "16:45", "17:00", "17:15", "17:30", "17:45", "18:00", "18:15", "18:30", "18:45", "19:00", "19:15", "19:30", "19:45", "20:00", "20:15", "20:30", "20:45", "21:00", "21:15", "21:30", "21:45", "22:00", "22:15", "22:30", "22:45", "23:00", "23:15", "23:30"] 

    arr2=["05:30", "05:45", "06:00", "06:15", "06:30", "06:45", "07:00", "07:15", "07:30", "07:45", "08:00", "13:00", "22:00", "22:15"] 

助けてください。事前のおかげ

+0

ソートされたデータのですか? –

+0

データは現在ソートされていますが、それは私には必須ではなく、重要でもありません。 –

+0

これは2つの配列の和集合に過ぎません... http://stackoverflow.com/questions/3629817/getting-a-union-of-two-arrays-in-javascript –

答えて

1

をARR2にハッシュマップを作成することができます。ソートされたデータのための

var arr1 = ["05:30", "05:45", "06:00", "06:15", "06:30", "06:45", "07:00", "07:15", "07:30", "07:45", "08:00", "08:15", "08:30", "08:45", "09:00", "09:15", "09:30", "09:45", "10:00", "10:15", "10:30", "10:45", "11:00", "11:15", "11:30", "11:45", "12:00", "12:15", "12:30", "12:45", "13:00", "13:15", "13:30", "13:45", "14:00", "14:15", "14:30", "14:45", "15:00", "15:15", "15:30", "15:45", "16:00", "16:15", "16:30", "16:45", "17:00", "17:15", "17:30", "17:45", "18:00", "18:15", "18:30", "18:45", "19:00", "19:15", "19:30", "19:45", "20:00", "20:15", "20:30", "20:45", "21:00", "21:15", "21:30", "21:45", "22:00", "22:15", "22:30", "22:45", "23:00", "23:15", "23:30"], 
 
    arr2 = ["05:30", "05:45", "06:00", "06:15", "06:30", "06:45", "07:00", "07:15", "07:30", "07:45", "08:00", "13:00", "22:00", "22:15"], 
 
    hash = {}; 
 

 
arr2.forEach(function (a) { 
 
    hash[a] = true; 
 
}); 
 

 
arr1 = arr1.filter(function (a) { 
 
    return !hash[a]; 
 
}); 
 

 
console.log(arr1);

提案。

var arr1 = ["05:30", "05:45", "06:00", "06:15", "06:30", "06:45", "07:00", "07:15", "07:30", "07:45", "08:00", "08:15", "08:30", "08:45", "09:00", "09:15", "09:30", "09:45", "10:00", "10:15", "10:30", "10:45", "11:00", "11:15", "11:30", "11:45", "12:00", "12:15", "12:30", "12:45", "13:00", "13:15", "13:30", "13:45", "14:00", "14:15", "14:30", "14:45", "15:00", "15:15", "15:30", "15:45", "16:00", "16:15", "16:30", "16:45", "17:00", "17:15", "17:30", "17:45", "18:00", "18:15", "18:30", "18:45", "19:00", "19:15", "19:30", "19:45", "20:00", "20:15", "20:30", "20:45", "21:00", "21:15", "21:30", "21:45", "22:00", "22:15", "22:30", "22:45", "23:00", "23:15", "23:30"], 
 
    arr2 = ["05:30", "05:45", "06:00", "06:15", "06:30", "06:45", "07:00", "07:15", "07:30", "07:45", "08:00", "13:00", "22:00", "22:15"], 
 
    j = 0; 
 

 
arr1 = arr1.filter(function (a) { 
 
    while (arr2[j] < a) { 
 
     j++; 
 
    } 
 
    return arr2[j] !== a; 
 
}); 
 

 
console.log(arr1);

+1

スニペットで答え&例をありがとう:) –

1

に、あなたが二番目の配列から作られた、ハッシュテーブルでそれをフィルタリングすることができ最初

var lookupMap = {}; 

arr2.forEach(function(value){ 
lookupMap[value] = true; 
}); 

arr1 = arr1.filter(function(value) { 
return !lookupMap[value] 
}); 
+1

助けてくれてありがとう;) –

関連する問題