Я заявляю, что я пробовал в течение долгого времени, прежде чем писать этот пост.Удалите элементы из одного массива, если не во втором массиве
Для сценария InDesign я работаю с двумя массивами ListItems. Теперь я пытаюсь удалить элементы одного массива, которые не находятся во втором массиве, но я застрял.
Учитывая, что я использую следующий яваскрипта код (он прекрасно работает), чтобы удалить одинаковые элементы между двумя массивами:
function check_dupli(arr_A, arr_B) {
for(var i = arr_B.length - 1; i >= 0; i--) {
for(var j = 0; j < arr_A.length; j++) {
if(arr_B[i] === arr_A[j]) {
arr_B.splice(i, 1);
}
}
}
arr_B.sort();
}
arr_A = ["a","b","d","f","g"]
arr_B = ["a","c","f","h"]
check_dupli(arr_A, arr_B) --> arr_B = ["c","h"]
check_dupli(arr_B, arr_A) --> arr_B = ["b","d","g"]
Я думал, изменить его, чтобы игнорировать элементы не то, что не в как массивы, и получить то, что я хочу, но что-то происходит не так, потому что я также получаю нежелательные данные:
function get_dupli(arr_A, arr_B, arr_C) {
for(var e = arr_B.length - 1; e >= 0; e--) {
for(var k = 0; k < arr_A.length; k++) {
if(arr_B[e] === arr_A[k]) {
arr_C.push(arr_B[e]);
}
}
}
arr_C.sort();
}
arr_A = ["a","b","d","f","g"]
arr_B = ["a","g","k"]
arr_C = ["h"]
get_dupli(arr_A, arr_B, arr_C) --> arr_C = ["a","g","h","k"] instead of --> ["a","g","h"]
get_dupli(arr_B, arr_A, arr_C) --> arr_C = ["a","b","d","f","g","h"] instead of --> ["a","g","h"]
Где я ошибаюсь? Есть ли другой способ в чистом javascript для решения проблемы?
Заранее благодарим за любую помощь.
Если вы просто работаете с двумя массивами, как указано, то зачем вводить третий массив в первую очередь? –
Ваш код работает: [jsfiddle] (http: // jsfiddle.net/oejaxhyj/1 /) –