Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何停止在html选项下拉框中复制查询结果?_Javascript_Jquery_Parse Platform - Fatal编程技术网

Javascript 如何停止在html选项下拉框中复制查询结果?

Javascript 如何停止在html选项下拉框中复制查询结果?,javascript,jquery,parse-platform,Javascript,Jquery,Parse Platform,使用parse.com和Javascript SDK 更新-我已经创建了一个小提琴来显示问题 下面的代码返回当前用户连接到的朋友列表。然后在选项下拉框中显示结果,供用户选择朋友。解析中有3条状态为“已连接”的记录,Chrome中的inspect元素中也显示了3条记录 由于某些原因,当结果显示在下拉框中时,它们将被复制 我需要包括toUser和fromUser,另外,仅使用其中一个,您只能获得1/2的好友连接 如何在下拉框中停止复制?一个工作示例/anwser将是惊人的 ![var curren

使用parse.com和Javascript SDK

更新-我已经创建了一个小提琴来显示问题

下面的代码返回当前用户连接到的朋友列表。然后在选项下拉框中显示结果,供用户选择朋友。解析中有3条状态为“已连接”的记录,Chrome中的inspect元素中也显示了3条记录

由于某些原因,当结果显示在下拉框中时,它们将被复制

我需要包括toUser和fromUser,另外,仅使用其中一个,您只能获得1/2的好友连接

如何在下拉框中停止复制?一个工作示例/anwser将是惊人的

 ![var currentUser = Parse.User.current();
         var FriendRequest = Parse.Object.extend("FriendRequest");

        var queryOne = new Parse.Query(FriendRequest);
        queryOne.equalTo("toUser", currentUser);


        var queryTwo = new Parse.Query(FriendRequest);
        queryTwo.equalTo("fromUser", currentUser);

        var mainQuery = Parse.Query.or(queryOne, queryTwo);
        //mainQuery.include('toUser');
        mainQuery.include('fromUser');
        mainQuery.equalTo("status", "Connected");


            mainQuery.find({
            success: function(results) {
                var friends = \[\];
                for (var i = 0; i < results.length; i++) {
                    friends.push({
                        username: results\[i\].get('fromUser').get('username'),

                        userId: results\[i\].get('fromUser').id,



                    });
                    var select = document.getElementById("selectFriend");
                    $.each(friends, function(i, v) {
                        var opt = v.userId;
                        var optfrontend = v.username;

                        var el = document.createElement("option");
                        el.textContent = optfrontend;
                        el.value = opt;
                        select.appendChild(el);
                    })

                }
            },

            error: function(error) {
                alert("Error: " + error.code + " " + error.message);
            }
         });
![var currentUser=Parse.User.current();
var FriendRequest=Parse.Object.extend(“FriendRequest”);
var queryOne=newparse.Query(FriendRequest);
queryOne.equalTo(“toUser”,当前用户);
var queryTwo=newparse.Query(FriendRequest);
queryTwo.equalTo(“fromUser”,currentUser);
var mainQuery=Parse.Query.or(queryOne,queryTwo);
//mainQuery.include('toUser');
mainQuery.include('fromUser');
mainQuery.equalTo(“状态”、“连接”);
mainQuery.find({
成功:功能(结果){
变量friends=\[\];
对于(var i=0;i
HTML

选择一个朋友

您可以使用从阵列中删除重复项:

friends = $.unique( friends );
未经测试,但也可以直接在美元中工作。每个:

$.each($.unique(friends), function(i, v) { ...
更新:由于使用$.unique()不适用于
好友
数组,可能
好友
由具有相同用户名但不同其他值的唯一条目组成-因此可以使用以下方法:

var added = {};
$.each(friends, function(i, v) {
    var opt = v.userId;
    var optfrontend = v.username;
    if(!added[optfrontend])
    {
      added[optfrontend]= true;

      var el = document.createElement("option");
      el.textContent = optfrontend;
      el.value = opt;
      select.appendChild(el);
    }
});
演示

在处理
$.each()
时,通过检查
added[optfrontend]
是否为true,这只会将用户名添加到以前未添加的选项中

作为旁注-在使用jQuery时,还可以使用

var select = $("#selectFriend");
而不是

var select = document.getElementById("selectFriend");
但是你必须改变

select.appendChild(el);
进入


更新:当此方法中使用的
var added={};
在全局范围内声明时,建议的方法有效,因此它可以在
each()
中访问。如果它声明在
each()
的正上方,但在OP代码中的另一个函数中,它将在
each()中未定义

这似乎是您的逻辑有问题…您有两个查询,一个从朋友请求中获取
toUser
,另一个从用户获取
。。然后您将这两个查询都放在主查询中。唯一合乎逻辑的是,这样会得到重复的结果。@CBroe我想我上面提到过,但我需要同时包含这两种方法。好友请求可以来自User或toUser,如果两者都不使用,则只能获得50%的记录。我会尝试,我是同时使用您建议的两行还是两种不同的方法?@Dano007只有其中一种方法。第一种方法在
$之前。每个(好友)
,我刚才在
each()中直接提到了使用
unique()的第二种方法
因为这样可以节省一行。@Dano007好的,我刚刚在更新的答案中添加了第二种方法。非常感谢,似乎仍然存在问题……您可以访问此小提琴吗?我在这里使用parse@Dano007 Yes创建了它,并在更新中修复了它。只需将添加的
var={};
移到顶部即可(现在介于
var queryTwo
var mainQuery
)之间),现在它开始工作了。我添加了一些控制台日志消息,以便更容易地检查
每个()中发生的事情。
select.appendChild(el);
select.append(el);