如果JavaScript数组包含元素,则返回true
到目前为止,我有以下代码:如果JavaScript数组包含元素,则返回true,javascript,arrays,boolean,indexof,Javascript,Arrays,Boolean,Indexof,到目前为止,我有以下代码: var isMatch = viewedUserLikedUsersArray.indexOf(logged_in_user); if (isMatch >=0){ console.log('is match'); } else { console.log('no match'); } 如果一个元素在数组中,它将返回一个大于或等于0的数字,因此我可以说isMatch>=0,但这似乎不是最安全的方法。否则,
var isMatch = viewedUserLikedUsersArray.indexOf(logged_in_user);
if (isMatch >=0){
console.log('is match');
}
else {
console.log('no match');
}
如果一个元素在数组中,它将返回一个大于或等于0的数字,因此我可以说
isMatch>=0
,但这似乎不是最安全的方法。否则,我如何才能从所需代码中返回真/假?可能会因为某些原因而遭到抨击,但嘿,为什么不呢
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.
唯一使用
Array.prototype的ChemistryBlob答案
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.
Array.prototype.findMatch=函数(令牌){
var i=0,count=this.length,matchFound=false;
对于(;i
您可以使用
当它找到一个true
值时,它就会停止。首先,我们必须了解vieweduserlikeduserray
数组中存储了什么
如果有原语,这没关系,但是如果有对象,我们不能使用数组的索引方法,因为它在内部使用严格的比较==
,我们知道,与对象的比较是通过链接进行的
indexOf
的工作原理类似于循环迭代,这是唯一的方法
对于对象,我们可以使用数组的find
方法或findIndex
我们还可以使用userId键将用户存储在hashMap中,并通过引用object属性来检查匹配
var someUsers={
'#124152342': {
...
},
'#534524235': {
...
},
...
};
...
var someUserId='#124152342';
if(someUsers[someUserId]){
log('is match');
}否则{
console.log(“不匹配”);
}
这有什么不安全之处?这就是函数的工作方式。这是.indexOf()
的定义行为-返回值-1
表示该值不在数组中,其他值表示它在数组中。最安全的方法是什么?这会在哪里失败?您可以使用.find
或includes
。将其包装在函数中,并返回布尔值而不是登录到控制台。还有一个ES2015替代方案。。。数组#包括可能Array.prototype.findMatch=function(token){…
?这与indexOf()有何不同?
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.
var isMatch = viewedUserLikedUsersArray.some(function(user){
return user === logged_in_user;
});