Вы не можете в общем случае решить эту проблему для O (n), если не хотите ограничить свои массивы объектами, которые можно сериализовать в строки
function substract(one, two) {
var result = []
for (var i = 0, len = one.length; i < len; i++) {
var value = one[i]
if (two.indexOf(value) === -1) {
result.push(value)
}
}
return result
}
Или если вы хотите использовать итераторы массива
function substract(one, two) {
return one.filter(function (value) {
return two.indexOf(value) === -1
})
}