Помогите решить задачу с массивами
Всем привет! Я чайник в JS помогите разобраться с задачами.
Задача №1 Реализовать алгоритм. Дан массив целых чисел с индексами от 0 до N, необходимо реализовать поиск числа A среди элементов массива. Выводим на экран номер найденного числа, иначе выводим строку 'Not found'. Задача №2 Реализовать алгоритм. Дано два массива чисел с индексами от 0 до N, необходимо вывести на экран все числа которые одновременно присутствуют в обоих массивах. |
привет! что конкретно не понятно? или хотите чтоб с нуля написали
|
лучше с нуля потому что вообще не пойму как это сделать. Почитал про массивы, как применить так и не понял.
|
тогда лучше перенести в раздел работа
|
еслиб хоть какое-то начало было. а так выходит у меня какое-то задание а вы делайте
|
Цитата:
function findElem(A,Arr) { var n=Arr.length, i=0; while (Arr[i]!=A && i<n) i++; if (i<n) alert(i); else alert('Not found'); } Цитата:
|
:)
function findElem(A,Arr) { var i=Arr.length; while (--i&&Arr[i]!=A) ; alert(i<0?'Not found':i); } var Arr = [1, 2, 3, 4, 5, 6, 7, 8, 19, 9, 16, 15, 65, 0]; findElem(9,Arr) |
№1
var array = [1, 2, 3, 4, 5] ; function find(number) { var pos = array.indexOf(number) ; if(!~pos) pos = "Not found" ; alert(pos) ; } ; find(1) ; find(6) ; find(5) ; №2 var array1 = [1, 2, 3, 4, 5], array2 = [1, 6, 0, 2, 5], array3 = [0, 3, 4, 7, 2] ; function findElems(arr1, arr2) { return arr1.slice(0).filter(function(x) { if(~arr2.indexOf(x)) return true ; }) ; } ; alert(findElems(array1, array2)) ; alert(findElems(array1, array3)) ; alert(findElems(array2, array3)) ; В ишаке это, по-моему, не работает |
Здравствуйте,
Я новичек в JS, с имплементацией худо бедно справляюсь когда появляется необходимость но в этот раз гугл мне не помог (не смог разобраться с семантикой)- прошу помощи у вас. Мне необходимо из многомерного массива вытащить элемент при совпадении соседних. К примеру дано: var parts=[ { type: 'b#1', model: 'FD016', //part# width: 24, //param1 depth: 48 //param2 }, { type: 'b#1', //use model: 'FD017', //part# width: 24, //param1 depth: 60 //param2 }, { type: 'b#2', //use model: 'FD018', //part# width: 24, //param1 depth: 72 //param2 }, { type: 'b#2', //use model: 'FD019', //part# width: 24, //param1 depth: 96 //param2 }, { type: 'b#3', //use model: 'FD020', //part# width: 24, //param1 depth: 120 //param2 }, { type: 'b#3', //use model: 'FD021', //part# width: 24, //param1 depth: 48 //param2 }, ]; var depth = $('input[id=depth]').attr("value"); var width = $('input[id=width]').attr("value"); Надо внести в инпут - model у которого width & depth совпадают с переменными Пробовал parts.filter(function (el) { return parts.indexOf(el[width]); }); $('input[id=width]').val(parts.indexOf(el[width])); |
awoth,
var parts = [{ type: 'b#1', model: 'FD016', width: 24, depth: 48 }, { type: 'b#1', model: 'FD017', width: 24, depth: 60 }, { type: 'b#2', model: 'FD018', width: 24, depth: 72 }, { type: 'b#2', model: 'FD019', width: 24, depth: 96 }, { type: 'b#3', model: 'FD020', width: 24, depth: 120 }], input = $("#input") ; // ваш input, куда нужно вставить model function find() { var depth = $('#depth').attr("value"), width = $('#width').attr("value") ; parts.some(function(x) { if(x.width == width && x.depth == depth) { input.val(x.model) ; return true ; } ; }) ; } // и когда вам нужно вызываете функцию find() |
Цитата:
Вместо 'Not found' будет 0. |
Цитата:
|
Например
<script> function findElem(A,Arr) { var i=Arr.length; while (--i&&Arr[i]!=A) ; alert(i<0?'Not found':i); } </script> <button onclick="findElem(-5,[1, 2, 3, 4, 5, 6, 7, 8, 19, 9, 16, 15, 65, 0])">Пример</button> Всегда будет 0, когда элемента нет в массиве. |
Demath,
ок! function findElem(A,Arr) { var i=Arr.length; while (i--&&Arr[i]!=A) ; alert(i<0?'Not found':i); } findElem(-5,[1, 2, 3, 4, 5, 6, 7, 8, 19, 9, 16, 15, 65, 0]) |
Цитата:
<script type="text/javascript"> function getIntersection(A,B) { A.sort(function(a,b){return a-b;}); //Сортировка А и B по возрастанию. B.sort(function(a,b){return a-b;}); var a0=A[0], b0=B[0], k1=1, k2=1; for (var i=1; i<A.length; i++) //Удаление повторяющихся элементов { if (A[i]!=a0){ A[k1++]=A[i]; a0=A[i]; } } // в сортированных массивах А и B. A.length = k1; for (var i=1; i<B.length; i++) { if (B[i]!=b0) { B[k2++]=B[i]; b0=B[i]; } } B.length = k2; var N = A.length, M = B.length, C = []; for (var i=0, j=0, k=0, m=0; k<N+M; k++) //Слияние A и B в С с сохранением упорядоченности. { if (i==N){ C[k] = B[j++]; continue; } if (j==M){ C[k] = A[i++]; continue; } C[k] = (A[i]<B[j]) ? A[i++] : B[j++]; } for (var i=1, j=0; i<C.length; i++) { if (C[i-1]==C[i]){ C[j++] = C[i-1]; } } //Удаление в C всех элементов, C.length = j; // кроме дублирующих. return C; } </script> <button onclick="alert( getIntersection([-1,3,-4,5,2,6],[-1,0,8,1,2,9,3,-4,5,7]) )">Пример</button> |
:write:
Вариант ))) function getIntersection(c, d) { var a = {}; c.map(function (b) { a[b] = !0 }); return a = d.filter(function (b) { return a[b] }) }; alert( getIntersection([-1,3,-4,5,2,6],[-1,0,8,1,2,9,3,-4,5,7]) ) |
Спасибо за помощь,
по логике - все должно работать, результат пока не получил - добавил сами инпуты и кнопку с вызовом функции - выдает $ is not defined ... input = $('#input1') ; // ваш input, куда нужно вставить model function find() { var depth = $('#depth').attr("value"), width = $('#width').attr("value") ; parts.some(function(x) { if(x.width == width && x.depth == depth) { input.val(x.model) ; alert (input.val(x.model)); return true ; } ; }) ; } </script> <input id="input1" name="input1" value="" type="text" /> <input id="depth" name="depth" value="60" type="text" /> <input id="width" name="width" value="24" type="text" /> <input name="submit" type="button" value="submit" onclick="find()" /> P.S. по идее можно ведь прописать инфу строкой - разбивая на массив по 3 элемента выяснять совпадение первых двух с заданными переменными и при совпадении присваивать значение 3го элемента инпуту... пойду почитаю как сплит работает. P.P.S скрипт после доработки напильником отлично встроился на место и функционирует, Спасибо от души сообществу и лично Hekumok. |
nasqad,
Вариант не ловит повторы и ноль .... function getIntersection(a, b) { return a.filter(function (c) { return b.indexOf(c) != -1 && c; }) }; alert( getIntersection([0,-1,3,-4,5,2,6,3,3,3,3],[-1,0,8,1,2,9,3,-4,5,7,0]) ) function get(c, d) { var a = {}; c.map(function (b) { a[b] = !0 }); return a = d.filter(function (b) { return a[b]? (a[b]=!1,!0):!1 }) }; alert( get([0,-1,3,-4,5,2,6,3,3,3,3],[-1,0,8,1,2,9,3,-4,5,7,0]) ) |
nasqad,
интересно повторы одновременно присутствуют во втором массиве в котором их нет ? :write: |
Цитата:
Нашел вроде обьяснение как сделать аналог для ИЕ но применить не получается (http://www.tutorialspoint.com/javascript/array_some.htm) может кто помочь в данном вопросе? Тестил варианты типа if (!Array.prototype.some) { var bench=[{a:1, b:9}{a:2,b:11}]; Array.prototype.some = function(fun /*, thisp*/) { var len = this.length; if (typeof fun != "function") throw new TypeError(); var thisp = arguments[1]; for (var i = 0; i < len; i++) { if (i in this && fun.call(thisp, this[i], i, this)) return true; } return false; }; } function isBigEnough(element, index, array) { return (element >= 10); } var retval = bench.some(isBigEnough); document.write("Returned value is : " + retval ); не пашет 8( |
сорри - ответ прост как никогда, видимо заработался с этим скриптом.
достаточно просто вставить сам преобразователь перед функцией и ИЕ8 сможет работать с some() if (!Array.prototype.some) { Array.prototype.some = function(fun /*, thisp*/) { var len = this.length; if (typeof fun != "function") throw new TypeError(); var thisp = arguments[1]; for (var i = 0; i < len; i++) { if (i in this && fun.call(thisp, this[i], i, this)) return true; } return false; }; } |
Часовой пояс GMT +3, время: 04:54. |