匹配javascript数组中的值

时间:2017-01-10 15:00:48

标签: javascript mysql node.js

在我查看此帖之前:How can I find matching values in two arrays? 但它没有帮助我。我真的不明白。所以,如果我在这里解释我的问题,有人可以帮我解决。

我有一个学校项目(我应该匹配用户的位置,标签,人气得分等。 在为两个位置使用算法之前,我想要第一个非精确排序。所以基本上我想比较两个值,如'巴黎'和'巴黎')

我的搜索功能会在内部返回一个带有两个{}的[],因此有两个人匹配我的第一个搜索值(性别)

我正在使用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 } ]

不,我有这个数据如何检查我的搜索者的位置是否= =我的otherUsersLocation(即使他们超过1个位置) 谢谢你的帮助!

3 个答案:

答案 0 :(得分: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
        }
    }
}

答案 1 :(得分:0)

我为你编写了一些代码,但是你应该可以将它应用到你的情况中。基本上,我们只是循环遍历我们想要搜索的对象并查看“city”属性。我重命名了一些变量,以使更清楚的事情发生。

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);

您可以按照相同的步骤匹配数据中的任何内容。

答案 2 :(得分:0)

这就是我设法在我的数组中找到匹配值的方法  if (SecondArray){ // console.log(SecondArray.length); SecondArray.forEach(function(element) { if (firstArray[0].city === element.city) { console.log("element); } }) }