Нахождение одинаковых элементов в двух массивах и замена в одном
У меня есть два массива в них есть похожие элементы, как осуществить поиск по похожим элементам с заменой, предположим на ноль. У меня не получается это сделать.
Два массива 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; } |
| Часовой пояс GMT +3, время: 07:01. |