Да, это вернет 4 Поскольку _.difference
Возвращает новый массив фильтруется values.I пытался ява скрипт решение. Надеюсь, это поможет вам.
function keepDuplicate(array1, array2){
var occur;
var indexes = [];
_.each(array2, function(value){
_.each(array1, function(ar1value, index){
if(value === ar1value){
occur = index;
}
});
indexes.push(occur);
});
_.each(indexes, function(remove, index){
if(index === 0){
array1.splice(remove, 1);
}
else{
remove = remove-index;
array1.splice(remove,1);
}
});
return array1;
}
keepDuplicate([1, 1, 1, 2, 2, 2, 3, 4], [1, 2, 3])
Это Возвращение [1, 1, 2, 2, 4]
Ваша проблема очень неоднозначным. Неясно, какое возникновение каждого элемента должно быть удалено из первого массива. Предположим, что у вас есть эти массивы: '[1, 1, 2, 2, 1, 2, 3, 4], [1, 2, 3]'. Что вы ожидаете от результата? – hindmost
hmm, хороший пункт. Я хотел бы удалить первый экземпляр каждого элемента во втором массиве. так что это будет [1,2,1,2,3,4] – Finnnn
AFAIK lodash не имеет такого метода, готового к использованию. Я бы предложил использовать вложенный цикл. – hindmost