Ale*_*014 1 javascript arrays facebook-graph-api
所以我检索了一个包含来自facebook的照片的对象,这一切都很好.
for (var i = 0; i < photoLikes.data.length; i++) {
if (photoLikes.data[i].name === facebook.username) {
alert("You have already liked this photo. Unliked");
var count = photoLikes.data.length;
//facebook.unlikePhoto(id, count);
}
Run Code Online (Sandbox Code Playgroud)
^^此代码适用于上面,
但问题是在查看数组中是否有名称ISNT时,它的作用是迭代每个项目,如果它不等于用户名(搜索用户名是否在对象中)则调用else语句.
我只需要它被召唤一次.有谁有任何想法?这是我不在的声明.我试过这个:
for (var x = 0; x < photoLikes.data.length; x++) {
if (facebook.photos.indexOf(facebook.username == -1)) {
console.log("increment");
}
}
Run Code Online (Sandbox Code Playgroud)
和
for (var x = 0; x < photoLikes.data.length; x++) {
if (photoLikes.data[i].name != facebook.username) {
console.log("increment");
}
}
Run Code Online (Sandbox Code Playgroud)
并且每次都触发.
谢谢
编辑:一旦满足if条件,我试图突破for循环.
基本上是user1680977的(非常好的)答案,但改进了一些设计模式(单个var,针对循环优化,类型安全比较):
var found = false,
i, count;
for (i = 0, count = photoLikes.data.length; i < count; i++) {
if (photoLikes.data[i].name === facebook.username) {
found = true;
break;
}
}
if (found === false) {
alert("The name was not found in the array");
}
Run Code Online (Sandbox Code Playgroud)
如果你不需要,不要在循环中使用"else",尽可能小而快地将代码保存在循环中.
indexOf将不起作用,因为名称不是键.有一个很好的过滤方法,但在这种情况下不值得.您还可以在此主题中查看答案以获取更多解决方案:如何检查数组是否包含JavaScript中的对象?
顺便说一句,这将是完美的功能,不需要休息:
function isUserInArray(likeArray, username) {
var i, count;
for (i = 0, count = likeArray.length; i < count; i++) {
if (likeArray[i].name === username) {
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |