到目前为止,我有这段代码:
var isMatch = viewedUserLikedUsersArray.indexOf(logged_in_user);
if (isMatch >=0){
console.log('is match');
}
else {
console.log('no match');
}
如果元素在数组中,它将返回一个大于或等于0的数字,所以我可以说isMatch >=0
但这似乎不是最安全的方法。我怎样才能从所需的代码中返回true / false?
答案 0 :(得分:2)
可能会因为某种原因而受到抨击,但是,嘿,为什么不呢!
function findMatch(arr, user) {
var i = 0, count = arr.length, matchFound = false;
for(; i < count; i++) {
if (arr[i] === user) {
matchFound = true;
break;
}
}
return matchFound;
}
var isMatch = findMatch(viewedUserLikedUsersArray, logged_in_user); // etc.
替代方案也可以是includes()
var isMatch = viewedUserLikedUsersArray.includes(logged_in_user); // returns true/false
答案 1 :(得分:2)
您可以使用Array.prototype.some
var isMatch = viewedUserLikedUsersArray.some(function(user){
return user === logged_in_user;
});
当它找到true
值
答案 2 :(得分:1)
唯一的ChemistryBlob回答Array.prototype
Array.prototype.findMatch = function(token) {
var i = 0, count = this.length, matchFound = false;
for(; i < count; i++) {
if (this[i] === token) {
matchFound = true;
break;
}
}
return matchFound;
}
var isMatch = viewedUserLikedUsersArray.findMatch(logged_in_user); // etc.
答案 3 :(得分:0)
首先,我们必须了解viewedUserLikedUsersArray
数组中存储的内容。
如果有原语,那没关系,但是如果有对象我们就不能使用indexOf
数组方法,因为它在内部使用严格的比较===
,我们怎么知道,与对象的比较正在通过链接。
indexOf
的工作方式类似于迭代循环,唯一的方法。
如果是对象,我们可以使用数组MDN Array.prototype.find()或find
Array.prototype.findIndex()的findIndex
方法;
我们也可以使用userId键在hashMap中存储用户,并通过引用object属性来检查匹配。
var someUsers = {
'#124152342': {
...
},
'#534524235': {
...
},
...
};
...
var someUserId = '#124152342';
if (someUsers[someUserId]) {
console.log('is match');
} else {
console.log('no match');
}