2017-01-10 3 views
0

перед тем, что я проверял это сообщение: How can I find matching values in two arrays? Но это мне не помогло. Я действительно не понимаю. Поэтому, возможно, если я объясню свою проблему, здесь кто-то может помочь мне ее решить.Соответствующие значения в массивах javascript

У меня есть школьный проект (я должен соответствовать пользователю относительно их местоположения, тегов, оценки популярности и т. Д. Прежде чем использовать алгоритм для двух местоположений, я хочу первый неточный тип. Поэтому в основном я хочу сравнить два значение, как «Париж» и «Париж»)

Моя функция поиска возвращает меня [] с двумя {} внутри, так что есть два человека, которые соответствуют относительно моих первых значений поиска (пол)

Я используя Node.js, моя база данных - это MySQL, и моя функция использует обратные вызовы и обещания.

Так Это мой первый объект (он содержит информацию моего искателя)

[ RowDataPacket { 
id: 34, 
username: 'natedogg', 
latitude: 48.8835, 
longitude: 2.3219, 
country: 'France', 
city: 'Paris', 
zipcode: 75017 } ] 

Это второй один (он содержит 2 пользователей)

[ RowDataPacket { 
id: 33, 
username: 'pablito', 
latitude: 48.8921, 
longitude: 2.31922, 
country: 'France', 
city: 'Paris', 
zipcode: 75017 }, 
RowDataPacket { 
id: 35, 
username: 'tupac', 
latitude: 48.8534, 
longitude: 2.3488, 
country: 'France', 
city: 'levallois', 
zipcode: 92300 } ] 

Нет, что у меня есть эти данные как можно Я проверяю, находится ли местоположение моего поисковика == my otherUsersLocation (даже если они больше 1 места) Благодарим за помощь!

+0

Я попытался 'firstArray [0] == .city secondArray [0] .city.' Но вот у меня есть thwo .city в второй массив, чтобы он соответствовал первому, но не второму. – pkerckho

+0

@Cruiser Я также пробовал решение дальше, но он не работает. Я сделал 'для (город в потенциалеЗдесь) { для (город в поисковикеLoc) { if (город === поисковикLoc [0]. [Город]) { console.log (« working? »); } } } '}' Я изменил значение в своем db, чтобы он работал, но нет, я ничего не могу зарегистрировать – pkerckho

ответ

1

Похоже, вы в основном хотите сравнить свой первый объект (ваши данные поиска) с объектами во втором массиве (ваши данные пользователя). Вам не обязательно непосредственно нужно сравнивать два массива, потому что у вас более сложные данные, чем такие строки, как строки или цифры.

Для сравнения объектов в простом JavaScript я бы сделал что-то вроде этого:

// loop through each object in user array 
for (object in secondArray) { 

    // loop through each property in the user object 
    for (property in object) { 

     // compare the property of user object with corresponding search object property 
     if (property === firstArray[0][property]) { 
      // do something 
     } 
    } 
} 
+0

Привет, спасибо за ваш ответ, я попробовал, но он возвращает мне ошибку: говорит 'firstArray [0]. [Свойство], Неожиданный токен ['Я действительно не знаю, почему – pkerckho

+0

@pkerckho Я отредактировал свой ответ. Мне нужно было сказать 'firstArray [0] [свойство]' вместо 'firstArray [0]. [Свойство]'. Надеюсь, он работает сейчас! Это делается для меня, когда я устанавливаю его в консоли браузера! –

+1

@ Томас Юранек, я исправил его так: 'if (SecondArray) { // console.log (SecondArray.length); SecondArray.forEach (функция (элемент) { если (firstArray [0] .city === element.city) { console.log ("элемент); } }) }' Я также попробовать ваши идея, спасибо за вашу помощь! – pkerckho

0

Я работал некоторый код для вас, что работает, и вы должны быть в состоянии применить его к вашей ситуации. В принципе, мы просто перебираем объекты, которые хотим искать, и смотрим на свойство «город». Я переименовал некоторые из переменных, чтобы сделать все более четким.

var data = { 
    id: 34, 
    username: 'natedogg', 
    latitude: 48.8835, 
    longitude: 2.3219, 
    country: 'France', 
    city: 'Paris', 
    zipcode: 75017 
}; 

var searchable = [{ 
    id: 33, 
    username: 'pablito', 
    latitude: 48.8921, 
    longitude: 2.31922, 
    country: 'France', 
    city: 'Paris', 
    zipcode: 75017 }, 
    { 
    id: 35, 
    username: 'tupac', 
    latitude: 48.8534, 
    longitude: 2.3488, 
    country: 'France', 
    city: 'levallois', 
    zipcode: 92300 
}]; 

// this array is just to save obj when we have a match 
var found =[]; 
// loop through each element in our searchable array 
for(var i=0;i<searchable.length;++i){ 
    if(data["city"] == searchable[i]["city"]){ 
     // did we find it? push it onto the found array 
     console.log("found: " + searchable[i]["city"]); 
     found.push(searchable[i]["username"]);} 
} 
// look to see if we got what we wanted 
console.log(found); 

Вы можете следовать этой же процедуре в соответствии с чем-либо в данных.

+0

Спасибо, это именно то, что я искал! Мне удалось решить эту проблему сегодня днем ​​решением, которое я только что опубликовал несколько минут назад. Но я буду помнить, потому что я буду снова используйте эту идею – pkerckho

+0

Эй, я просто хотел сказать вам, что вы хорошо работаете. Спасибо за вашу помощь. Я делаю что-то подобное сегодня, но это не работает, в основном это та же идея, я хочу найти подходящую ценность между двумя массивами, но я не могу правильно закодировать мои значения массива. Если бы вы могли помочь мне и в этом, Было бы здорово! – pkerckho

0

Это, как мне удалось найти значение соответствия в моих массивах if (SecondArray){ // console.log(SecondArray.length); SecondArray.forEach(function(element) { if (firstArray[0].city === element.city) { console.log("element); } }) }

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