Нахождение одинаковых элементов в двух массивах и замена в одном 
		
		
		
		У меня есть два массива в них есть похожие элементы, как осуществить поиск по похожим элементам с заменой, предположим на ноль.  У меня не получается это сделать. 
	Два массива var arrF = [3, 5, 8]; var arrS = [1, 2, 3, 5, 8]; Должно получится 1, 2, 0, 0, 0, а выходит 8,8,0,0,0. Как это можно исправить? Я хочу знать как это сделать только с помощью циклов никаких встроенных функций js не надо. Чтобы было проще использовать скрипт для других языков программирования. Вот моя попытка это сделать: 
$(document).ready(function(e){
var arrF = [3, 5, 8];
var arrS = [1, 2, 3, 5, 8];
var nums = [0,0,0,0,0];
function getIntersect(arrF, arrS){
    for ( var i = 0; i < arrF.length; i++ ){
        for ( var j = 0; j < arrS.length; j++ ){
             if ( arrF[i] == arrS[j] ){
                 nums[i] = 0;
             }
             else
             {
                 nums[i] = arrS[j];
             }
        }
    }
     return nums;
}
document.write(getIntersect(arrF, arrS));
});
 | 
	
		
 
<script>
var arrF = [3, 5, 8];
var arrS = [1, 2, 3, 5, 8];
function getIntersect(arr1, arr2) {
    if (arr1.length < arr2.length) {
        [arr1, arr2] = [arr2, arr1];
    }
    for (var i = 0; i < arr1.length; i++) {
        for (var j = 0; j < arr2.length; j++) {
            if (arr1[i] === arr2[j]) {
                arr1[i] = arr2[j] = 0;
            }
        }
    }
    return [arr1, arr2];
}
alert(JSON.stringify(getIntersect(arrF, arrS)));
</script>
вариант :)  | 
	
		
 На php не запускается, не знаю как эту строчку переделать. 
	[arr1, arr2] = [arr2, arr1];  | 
	
		
 list($arr1, $arr2)=[$arr2, $arr1]; 
	это обмен значений переменных без использования третей переменной или так $arr1=[$arr2,$arr2=$arr1][0];  | 
	
		
 Katy93, 
	массивы отсортированы по возрастанию?  | 
	
		
 Немного не корректно. Мы предполагаем, что все элементы в массивах разные. А если есть повторяющиеся? 
	Тогда так 
<script>
var arrF = [3, 5, 8, 1, 3, 6];
var arrS = [1, 8, 2, 3, 5, 8, 3, 1, 5, 7, 9];
function getIntersect(arr1, arr2) {
   let aj =[]
    if (arr1.length < arr2.length) {
        [arr1, arr2] = [arr2, arr1];
    }
    for (var i = 0; i < arr1.length; i++) {
        let zer = false
        for (var j = 0; j < arr2.length; j++) {
            if (arr1[i] === arr2[j]) {
                zer = true
                aj.push(j)
            }
        }
        if (zer) arr1[i]  = 0;
    }
    aj.forEach(j => arr2[j] = 0)
    return [arr1, arr2];
}
alert(JSON.stringify(getIntersect(arrF, arrS)));
</script>
 | 
	
		
 Цитата: 
	
  | 
	
		
 Цитата: 
	
 Цитата: 
	
 Цитата: 
	
 Цитата: 
	
  | 
	
		
 Цитата: 
	
 $diff = array_diff($arrS, $arrF); //$diff будет иметь только те значения, которых нет в массиве $arrF  | 
	
		
 Цитата: 
	
 По пиэйчпивси это будет for ($k = 0; $j < count($aj); $k++) { $arr2[$aj[$k]] = 0; }  | 
	
		
 Цитата: 
	
 $diff = array_diff($arrS, $arrF); $diff = array_merge($diff, array_fill(0, count($arrS) - count($diff), 0)); Вот только вопрос - зачем? Если бы данные существовали ради спортивного интереса, тогда ладно, но они что-то описывают, определяют, ..., где-то они и хранятся. А лучшее место для хранения, это база, а если так, то не нулями дополнять надо, а определять полям SQL таблицы значение 0 по умолчанию. Вообще эта тема очень похожа на то, что тут что-то делается не так, либо что-то лишнее.  | 
	
		
 Цитата: 
	
 Цитата: 
	
  | 
	
		
 Цитата: 
	
 И это единственное, что нужно сделать. Вы же делаете лишнюю бесполезную работу, которую можно заменить одной строкой стандартной функции языка.  | 
| Часовой пояс GMT +3, время: 12:07. |