2013-09-09 8 views
0

У меня есть два массива.Поиск в массиве Javascript в двух массивах

url = ["http://www.linkedin.com/in/jannuelanarna", "http://www.linkedin.com/in/jannuela", undefined, undefined]; 

publicUrl = ["http://www.linkedin.com/in/jannuelanarna", "http://www.linkedin.com/pub/jay-r-bautista/64/b29/45b", undefined, "http://www.linkedin.com/pub/ronilo-canson/75/927/4a3", "http://www.linkedin.com/pub/siddharth-chaudhary/33/aa1/8", "http://www.linkedin.com/in/rojohnh", "http://www.linkedin.com/pub/lara-martinez/74/777/a3b", "http://www.linkedin.com/pub/alena-ortega/69/72a/415", "http://www.linkedin.com/in/nivlek1416", "http://www.linkedin.com/pub/emmar-reveriza/59/a91/132", "http://www.linkedin.com/in/samsanchezcb", "http://www.linkedin.com/pub/mitch-stevens/6b/375/3a0", "http://www.linkedin.com/pub/irish-jane-sumadic/29/339/910", "http://www.linkedin.com/pub/joel-sumadic/45/31b/ab3", "http://www.linkedin.com/pub/luna-cielo-yniesta/68/4b2/690"]; 

Каким будет код, чтобы я мог искать, существует ли URL-адрес в массиве?

+2

Возможный дубликат [array.contains (obj) в JavaScript] (http://stackoverflow.com/questions/237104/array-containsobj-in-javascript). См. Также http://stackoverflow.com/questions/143847/best-way-to-find-an-item-in-a-javascript-array – bfavaretto

+0

Сэр, я видел ссылку. Думаю, это слишком продвинуто для меня? :/ –

+0

Разве это не 'url.indexOf ('http://www.linkedin.com/in/jannuelanarna')'? (Должен возвращать '0', я думаю) –

ответ

2

New demo: (click here) Нажмите «Запуск с JS в верхней части, правый угол.

function arraysHaveDuplicate(needle, arr1, arr2) { 
    //will return first duplicate or false 
    for (var i=0; i<arr1.length; ++i) { 
    if (arr2.indexOf(needle) !== -1) { //found match, return matched value 
     return arr1[i]; 
    } 
    } 
    return false; //no match 
} 

--old ANSWER-- Новый ответ выше !!!

Вот один способ, которым Вы могли бы это сделать.

var value = "http://www.linkedin.com/pub/luna-cielo-yniesta/68/4b2/690"; 
if (url.indexOf(value) !== -1 || publicUrl.indexOf(value) !== -1) { 
    alert('Found: '+value); 
} 
else { 
    alert('Not found: '+value); 
} 

Кроме того, вы могли бы сделать это в более многоразовой функции, например, так:

function testArrays(needle, arrays) { 
    for (var i=0; i<arrays.length; ++i) { 
    if (arrays[i].indexOf(needle) !== -1) { 
     return true; 
    } 
    } 
    return false; 
} 

if (testArrays(value, [url, publicUrl])) { 
    alert('Found: '+value); 
} 
else { 
    alert('Not found: '+value); 
} 

See my demo (click here). Возможно, вам придется нажать «Запустить с помощью JS» в углу, чтобы он выдавал предупреждения.

+0

Что мой план на самом деле: // Получение соединений текущего пользователя // Получить текущий URL-адресов из HREF тега на странице // Если есть такое же значение в адресах и publicUrls затем // Удалить href tag Что-то в этом роде. Но я просто не могу сравнить эти два динамически. –

+0

@ArmanJonVillalobos Вы говорите, что вам нужно убедиться, что значение найдено в BOTH массивах, а не только в одном или другом? – m59

+0

Но моя проблема в том, что нет никакой ценности, будет только два массива, один для URL-адреса, который отличается от каждой страницы. Так как работать над этим ?. Я не могу понять код или где меняться в соответствии с моей проблемой:/ –

2

Попробуйте это: (РЕДАКТИРОВАТЬ: Игнорировать неопределенные дубликаты)

var found=false; 
for(var i=0;i<url.length;i++) 
{ 
    if(url!==undefined && publicUrl.indexOf(url[i])!=-1) 
    { 
     alert('Found: ' + url[i]); 
     found=true; 
    } 
} 
if(found) 
{ 
    alert('Found'); 
} 
else 
{ 
    alert('Not found'); 
} 

array.indexOf(value) возвращает позицию значения в массиве, или -1, если значение не находится в массиве.

+0

Привет, спасибо. Я думаю, я мог бы продолжить здесь =). Это кристально ясно. Большое спасибо! –

+0

Uhm. indexOf находится на http: //, хотя есть разные ссылки, но из-за http: // все они найдены. Как работать над этим? –

+0

@Arman - Возможно, ваша проблема - это дубликат 'undefined' - попробуйте новую версию –

Смежные вопросы