Javascript:这个数组拼接的全部目的是什么?

标签 javascript arrays

我正在学习 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/

相关文章:

arrays - 如何在 PostgreSQL 8.4 中从 string_to_array() 返回一个元素?

java - 创建不同数据类型(日期和 double )的二维数组

javascript - typeof object.constructor 总是返回一个函数。真的吗?

php - 我们可以通过点击html浏览的打开按钮来调用javascript函数吗?

python - 将 numpy 数组转换为十六进制字节数组

arrays - 如何在字节数组中搜索 "StringA"?

javascript - 递归函数内部的异步调用

javascript - Selectize.js 委托(delegate)事件选项不起作用

javascript - 如何编写扩展功能组件的 ES6 类 React 组件?

c - 使用数组制作队列