我想将App req发送给5个人,我已经设法获得了5个人的UserID,但它总是那些5个人,是不是有办法随机化我从Facebook获得的USERID's
?
<script>
var profilePicsDiv = document.getElementById('profile_pics');
FB.getLoginStatus(function(response) {
FB.api({ method: 'friends.get' }, function(result) {
Log.info('friends.get response', result);
var user_ids="" ;
var numFriends = result ? Math.min(5, result.length) : 0;
if (numFriends > 0) {
for (var i=0; i<numFriends; i++) {
user_ids+= (
',' + result[i]
);
}
}
profilePicsDiv.innerHTML = user_ids;
alert(user_ids);
});
});
function sendRequestToRecipients() {
var user_ids = document.getElementsByName("user_ids")[0].value;
FB.ui({method: 'apprequests',
message: 'My Great Request',
to: user_ids, /// How to Fill the ID's HERE ?
}, requestCallback);
}
</script>
答案 0 :(得分:1)
我没有测试过,但这应该可行,
FB.getLoginStatus(function(response) {
FB.api({ method: 'friends.get' }, function(result) {
Log.info('friends.get response', result);
var user_ids="" ;
var totalFriends = result.length;
var numFriends = result ? Math.min(5, result.length) : 0;
if (numFriends > 0) {
for (var i=0; i<numFriends; i++) {
var randNo = Math.floor(Math.random() * totalFriends)
user_ids+= (',' + result[randNo]);
}
}
profilePicsDiv.innerHTML = user_ids;
alert(user_ids);
});
});
这里,在循环中我生成一个从0到result.length
的随机数(即当前响应中的总朋友)然后我使用随机的no从给定列表中获取随机id。
编辑(在OP询问非重复的randoms后),
根据您的要求,这应该有用......
FB.getLoginStatus(function(response) {
FB.api({ method: 'friends.get' }, function(result) {
Log.info('friends.get response', result);
var user_ids="" ;
var totalFriends = result.length;
var randNo = Math.floor(Math.random() * totalFriends);
var numFriends = result ? Math.min(5,totalFriends) : 0;
if (numFriends > 0) {
for (var i=0; i<numFriends; i++) {
user_ids+= (',' + result[randNo]);
randNo ++;
if(randNo >= totalFriends){
randNo = 0;
}
}
}
profilePicsDiv.innerHTML = user_ids;
alert(user_ids);
});
});
这里,我不是每次都生成随机数,而是生成一次随机,然后递增它。如果随机数不超过朋友的总数,那么我从0开始。
每次都会给随机的朋友:)
代码未经过测试,如果有错误我会道歉(但代码肯定会给你一个思考的方向)
答案 1 :(得分:0)
您现在总是从结果中收集朋友0,1,2,3和4。如果结果更长,那么你永远不会得到那些朋友ID。您应该计算0和长度之间的5个随机整数 - 1(包括)并获取它们(例如,result[3]
,result[84]
等等。然后,您应该向这些朋友发送邀请。
要计算0
和result.length - 1
之间的随机数,请参阅此StackOverflow问题:Generating random whole numbers in JavaScript in a specific range?。
我对FB.ui
函数并不熟悉,但您应该检查是否按照预期的方式给出数字。它是否希望它们像现在一样以逗号分隔?或者您是否需要拨打五次电话,每次应用请求一次?那是你应该抬头的东西。如果是后者,则必须迭代user_ids并使用每个用户ID调用FB.ui
。