Javascript 不清楚的。提供一个示例输入和所需输出。我将完整的函数插入,我只是尝试缩短一点,因为它相当长。很遗憾,您的编辑是一个糟糕的编辑。不需要完整的代码。您需要提供示例输入和所需输出。如果尝试执行此操作失败,请包含相关代码(仅相关代码)。如何将用户对象与消息对象关联

Javascript 不清楚的。提供一个示例输入和所需输出。我将完整的函数插入,我只是尝试缩短一点,因为它相当长。很遗憾,您的编辑是一个糟糕的编辑。不需要完整的代码。您需要提供示例输入和所需输出。如果尝试执行此操作失败,请包含相关代码(仅相关代码)。如何将用户对象与消息对象关联,javascript,arrays,sorting,javascript-objects,Javascript,Arrays,Sorting,Javascript Objects,不清楚的。提供一个示例输入和所需输出。我将完整的函数插入,我只是尝试缩短一点,因为它相当长。很遗憾,您的编辑是一个糟糕的编辑。不需要完整的代码。您需要提供示例输入和所需输出。如果尝试执行此操作失败,请包含相关代码(仅相关代码)。如何将用户对象与消息对象关联?例如,消息中的用户名是否与f_name相同?这不是要求客户使用搜索栏搜索用户和包含搜索查询的消息。您的问题不清楚。提供一个示例输入和所需输出。我将完整的函数插入,我只是尝试缩短一点,因为它相当长。很遗憾,您的编辑是一个糟糕的编辑。不需要完整的


不清楚的。提供一个示例输入和所需输出。我将完整的函数插入,我只是尝试缩短一点,因为它相当长。很遗憾,您的编辑是一个糟糕的编辑。不需要完整的代码。您需要提供示例输入和所需输出。如果尝试执行此操作失败,请包含相关代码(仅相关代码)。如何将用户对象与消息对象关联?例如,消息中的用户名是否与
f_name
相同?这不是要求客户使用搜索栏搜索用户和包含搜索查询的消息。您的问题不清楚。提供一个示例输入和所需输出。我将完整的函数插入,我只是尝试缩短一点,因为它相当长。很遗憾,您的编辑是一个糟糕的编辑。不需要完整的代码。您需要提供示例输入和所需输出。如果尝试执行此操作失败,请包含相关代码(仅相关代码)。如何将用户对象与消息对象关联?例如,消息中的用户名是否与
f_name
相同?这不是客户要求有一个搜索栏来搜索用户和包含搜索查询的消息。我怎么不知道我可以这样做,结果是sql问题而不是javascript问题。谢谢@binarymaxHappy帮助@PaulLedger。如果这回答了你的问题,请考虑将它标记为“接受”。BialMax WOW不知道我能做到这一点,结果它是一个SQL事件,而不是JavaScript。谢谢@binarymaxHappy帮助@PaulLedger。如果这回答了你的问题,请考虑将它标记为“接受”。
tx.executeSql("SELECT * FROM contacts WHERE f_name LIKE ? ORDER BY (CASE WHEN f_name = ? THEN 1 WHEN f_name LIKE ? THEN 2 ELSE 3 END), f_name ",["%" + query + "%", query, query + "%"],onSuccess, onError);
var allResults = [];
// create an array of all

for(var x = 0; x < allChatSearchResults.users.length; x++){
    var result = allChatSearchResults.users[x];
    result['type'] = 'user';
    allResults[allResults.length] = result;
}
for(var x = 0; x < allChatSearchResults.messages.length; x++){
    var result = allChatSearchResults.messages[x];
    result['type'] = 'message';
    allResults[allResults.length] = result;
}
allResults = [
{
    type : 'user',
    f_name : 'username',
    l_name : 'somename'
},
{
    type : 'message',
    message : 'this is my user name', //////   query from sql matches this
    date : '11/04/2016'
},
{
    type : 'message',
    message : 'another containing username', //////   query from sql matches this
    date : '09/04/2016'
},
//and so on
];
var searchResultsSource = 0;
var allChatSearchResults = {users : [], messages : []};
var searchChatResults = function (type, query, res){
    searchResultsSource++;
    if(res.length > 0){
        for(var x = 0; x < res.length; x++){ allChatSearchResults[type][x] = res[x]; }
    }
    if(searchResultsSource == 2){
        //run the function
        console.log('Search Results', allChatSearchResults);
        var allResults = [];
        //  create an array of all
        for(var x = 0; x < allChatSearchResults.users.length; x++){
            var result = allChatSearchResults.users[x];
            result['type'] = 'user';
            allResults[allResults.length] = result;
        }
        for(var x = 0; x < allChatSearchResults.messages.length; x++){
            var result = allChatSearchResults.messages[x];
            result['type'] = 'message';
            allResults[allResults.length] = result;
        }
        //  create an array of just search query

        //  reorder the array based on the ordered search query


    }
};
var searchChats = function () {
    var query = $('#activeChatSearch').val();
    query = query.toLowerCase();
    if(query.length > 3){
        //search my chats
        //search users and search messages
        db.transaction(function(tx) {
            var users = [];
            var chats = [];
            var messages = [];
            tx.executeSql("SELECT * FROM contacts WHERE f_name LIKE ? ORDER BY (CASE WHEN f_name = ? THEN 1 WHEN f_name LIKE ? THEN 2 ELSE 3 END), f_name ",["%" + query + "%", query, query + "%"], function (tx, res){
                if(res.rows.length == 0){ console.log('no users with first name ' + query); }
                for(var x = 0; x < res.rows.length; x++){ users[x] = res.rows.item(x); }
                searchChatResults('users', query, users);
            }, function (tx, error){
                console.log(error.message);
            });
            tx.executeSql("SELECT * FROM active_chats ORDER BY last_changed DESC", [], function (tx, res){
                if(res.rows.length > 0){
                    var count = 0;
                    var max = res.rows.length;
                    var results = res.rows;
                    var searchThisChat = function (tx, query, chatID){
                        tx.executeSql("SELECT * FROM chat_" + chatID + " WHERE message LIKE ? ORDER BY (CASE WHEN message = ? THEN 1 WHEN message LIKE ? THEN 2 ELSE 3 END), message LIMIT 0,1", ["%" + query + "%", query, query + "%"], function (tx, res){
                            if(res.rows.length == 0){ /*console.log('No chats match query',messages); */ }
                            else { messages[messages.length] = res.rows.item(0); }
                            if(count == max){ searchChatResults('messages', query, messages); } else{ searchThisChat(tx, query, results.item(count).chat_id); count++; }
                        }, function (tx, e){
                            console.log(e.message);
                            if(count == max){ searchChatResults('messages', query, messages); } else{ searchThisChat(tx, query, results.item(count).chat_id); count++; }
                        });
                    };
                    searchThisChat(tx, query, res.rows.item(0).chat_id);
                }
            }, function (tx, e){
                console.log(e.message);
            });
        }, function(err) {
            console.log('Open database ERROR: ', err);
        });

        var activeChats = $('#activeChats');
        activeChats.html('');
        for(var x = 0; x < 6; x++){
            var item = formatCurrentChatItem(
                {f_name : query, l_name : 'Bloggs', 'user_id' : 18},
                null,
                null
            );
            item.appendTo(activeChats);
        }
    }
};
$(function () {
    $('#activeChatSearch').on('input', searchChats);
    $('#activeChatSearchBtn').on('click', searchChats);  <-   input function
});