【问题标题】:Enqueue and Dequeue using ES6 spread operator使用 ES6 扩展运算符的入队和出队
【发布时间】:2018-02-25 21:59:12
【问题描述】:

我有一个数组“动物”数组,我想使用 es6 扩展语法在其上编写两个函数 enqueue 和 dequeue。 [先进先出]

我想要这个,因为这个对象处于我的 redux 状态,我不希望在入队和出队时发生突变。相反,每次入队和出队时我都想要一个新的动物对象。

let animals = [[cat][dog][elephant][mouse]]

enqueue(element) 
{ 
   animals = [...animals, element]
}

dequeue()
{
   animals = [???]
}

【问题讨论】:

  • 避免突变
  • 这是我的 redux 状态下的对象

标签: javascript reactjs ecmascript-6 redux


【解决方案1】:

它不是运算符;这是一种语法。您可以使用它来实现dequeue,方法如下:

let animals = ["cat", "dog", "elephant", "mouse"];

function enqueue(element) {
    animals = [...animals, element];
}

function dequeue() {
    let element;
    [element, ...animals] = animals;
    return element;
}

console.log(animals);
enqueue("frog");
console.log(animals);
console.log(dequeue());
console.log(animals);
.as-console-wrapper { max-height: 100% !important; top: 0; }

【讨论】:

  • 这不应该是后进先出和pop()吗?
  • 问题没有说明是FIFO还是LIFO队列;它只是说队列 - 不是堆栈 - 所以我假设是 FIFO。
  • @LokeshAgrawal 我建议在您的问题中具体说明细节,以避免将来被否决。
  • 感谢@estus 的建议,以后我会确保具体。但是队列只有一种解释,即从它的定义来看是 FIFO。
  • 如果我不想从 dequeue() 返回怎么办,而只更新动物。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-29
相关资源
最近更新 更多