我正在学习 Javascript 类(class)及其挑战。我不知道如何完成这个特定的挑战,但我在脑海中浏览了代码以确保我理解所有内容,然后我遇到了一个问题。
var strength = true;
var fear = false;
var pack = {
foodPouch: ['carrot', 'mystery meat', 'apple', 42],
addFood: function(foodItem) {
this.foodPouch = this.foodPouch || [];
this.foodPouch.push(foodItem);
},
gobbleFood: function(foodItem) {
return(this.foodPouch.indexOf(foodItem) >= 0) ?
this.foodPouch.splice(this.foodPouch.indexOf(foodItem), 1)[0] :
alert('Your pack lacks ' + foodItem);
},
feedBird: function(birdFood) {
for (var i = 0; i < this.foodPouch.length; i++) {
if (this.foodPouch[i] == birdFood) {
alert('Feed beggar bird ' + this.foodPouch[i]);
}
}
}
};
pack.feedBird('42');
我的问题是这一行:
return(this.foodPouch.indexOf(foodItem) >= 0) ?
this.foodPouch.splice(this.foodPouch.indexOf(foodItem), 1)[0] :
alert('Your pack lacks ' + foodItem);
为什么拼接数组的第一个三元操作以 [0] 结尾,我相信这使得整个操作成为拼接数组的值?我可以看到您是否想将其声明为某种变量,但似乎主要目的只是将其拼接起来。 [0] 是否存在有什么关系吗?
最佳答案
splice
从数组中删除元素,然后返回包含删除元素的数组。
在本例中,gobbleFood
函数正在检查特定项目是否存在(使用 indexOf
),并删除并返回它的第一个实例(如果存在)在foodPouch
中。
删除是使用 splice
完成的,并且由于 splice
返回删除的项目数组,即使在本例中只删除了 1 个项目,也有必要使用[0]
作为索引器来获取已删除的单个项目。
关于Javascript:这个数组拼接的全部目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32892108/