P粉8091101292023-09-06 17:33:17
var countries = [ {ChoicesID: 1, ChoicesName : '阿富汗'}, {ChoicesID: 2, ChoicesName : '阿尔巴尼亚'}, {ChoicesID: 3, ChoicesName : '阿尔及利亚'}, {ChoicesID: 4, ChoicesName : '安哥拉'}, {ChoicesID: 5, ChoicesName : '阿根廷'}, {ChoicesID: 6, ChoicesName : '亚美尼亚'} ]; var answer = ['阿富汗','阿尔巴尼亚','阿尔及利亚']; var NewCountries = countries.filter(o => !answer.includes(o.ChoicesName)) console.log(NewCountries)
like this?
P粉7901875072023-09-06 09:46:39
Use filter
and remove if it exists in answer
. Create an answerSet
for O(1) lookup, otherwise includes
can be used, but the time complexity of includes
is O(m) (where m is answer
The number of elements in the array, n is countries
The number of elements in the array)
Use set
O(m) O(n).O(1) = O(n) (given n>m)
Use includes
O(n).O(m) = O(nm)
var countries = [{ChoicesID: 1, ChoicesName : 'afghanistan'},{ChoicesID: 2, ChoicesName : 'albania'},{ChoicesID: 3, ChoicesName : 'algeria'},{ChoicesID: 4, ChoicesName : 'angola'},{ChoicesID: 5, ChoicesName : 'argentina'},{ChoicesID: 6, ChoicesName : 'armenia'}]; var answer = ['afghanistan','albania','algeria']; const answerSet = new Set(answer) const newCountries = countries.filter(c => !answerSet.has(c.ChoicesName)) console.log(newCountries)