var JOURNAL = [
{"events":["carrot","exercise","weekend"],"squirrel":false},
{"events":["bread","pudding","brushed teeth","weekend","touched tree"],"squirrel":false}]
function hasEvent(event, entry) {
var x = entry.events.indexOf(event)
console.log(x)
//-1
return x != -1;
}
hasEvent('pizza', JOURNAL[0])
例如:JOURNAL [0]中没有“披萨”,因此返回-1会导致x返回false。
据我所知,如果没有找到该事件,则返回-1!
我的问题是为什么它会返回-1?背后有什么理由吗?
非常感谢
编辑:问这个问题不好吗?那就是我被投票的原因?遗憾!
答案 0 :(得分:2)
-1是因为它是第一个,也许是最令人难忘的数字,不能被误认为是数组中的实际索引。
任何数字零或更大可能是一个索引,并且没有理由通过使用一些随机的“幻数”来使事情复杂化。
答案 1 :(得分:0)
return x != -1;
这将返回条件语句的结果,true
或false
,以防x
不等于-1
答案 2 :(得分:0)
这就是数组indexOf的工作原理
var array = [2, 9, 9];
array.indexOf(2); // 0
array.indexOf(7); // -1
在你的例子中
var events = ["carrot","exercise","weekend"];
events .indexOf("carrot"); // 0
events .indexOf("csarrot"); // -1
您的方法hasEvent()
会返回x
indexOf
值,而不是数组events
function hasEvent(event, entry)
{
var x = entry.events.indexOf(event);
return x != -1; // if the event was found in entry.events array then it will return the index of the item otherwise -1
}
答案 3 :(得分:0)
indexOf
, -1
会返回event
。因此,x!=-1
表示找到event
。
答案 4 :(得分:0)
indexOf()方法返回可在数组中找到给定元素的第一个索引,如果不存在则返回-1。
考虑到这一点,检查x != -1
表示检查event
数组中是否找到entry.events
,换句话说,"返回是否找到该对象是否在数组中#34;。
答案 5 :(得分:0)
使用indexOf
在数组中搜索时,将返回元素索引。在数组中,索引以0
开头。因此,第一个元素将具有索引0
,依此类推......
但如果找不到该元素,则返回-1
。
所以当你说x != -1
时,就意味着搜索元素存在于数组中。
JavaScript数组是零索引的:数组的第一个元素是索引0,最后一个元素的索引等于数组的长度属性减去1的值。
有关indexOf
的详细信息,请查看MDN。
答案 6 :(得分:0)
我的问题是为什么它会返回-1?
因为这是指定函数array.indexOf
的方式:
indexOf()方法返回可在数组中找到给定元素的第一个索引,如果不存在则返回-1。来源:Array.prototype.indexOf
背后有什么理由吗?
这有一个合乎逻辑的原因:JavaScript中的数组是0索引的。因此,范围(0,...,array.length - 1)中的所有值都是有效索引值,即当元素在数组中时可能返回。将array.length返回到 not found 将会相当尴尬,因为它会强制调用者始终检查array.length来解释该值。
因此,-1
是表示 not found 的始终明显的值,因为它永远不是有效的索引值。
x!= -1是什么意思?
这意味着如果找到hasEvent
参数true
,则event
将返回false
,如果没有,则Intent openNewActivity = new Intent(getApplicationContext(), Activity2.class);
openNewActivity.putExtra("image", "www.fb.com/profilepic.png");
startActivity(openNewActivity);
。