一行推送项目数组和返回项目

时间:2018-03-16 17:30:22

标签: javascript node.js

我有这个:

  getReadableStream() {
    const readableStream = new Readable({
      read(size) {
        return false;
      }
    });
    this.readableStreams.push(readableStream);
    return readableStream;
  }

然而,如果我可以推送到数组并在同一个调用中返回该项,那将是很好的,我正在寻找这个:

 getReadableStream() {
    return this.readableStreams.push(new Readable({
      read(size) {
        return false;
      }
    }));
  }

但当然Array.prototype.push不会返回被推送的项目。有没有办法用JavaScript做到这一点?理想情况下,我不想创建一个新数组,保留原始数组。

2 个答案:

答案 0 :(得分:2)

如果您想在一行中执行此操作,可以使用comma operator

return this.readableStreams.push(readableStream), readableStream;

答案 1 :(得分:1)

一个丑陋的解决方案是覆盖Arrays原型:

Array.prototype.pushAndReturn = function(el){
  this.push(el);
  return el;
};

所以你可以做到

return readableStreams.pushAndReturn(new Readable())

或者只是创建一个帮手:

const push = (arr, el) => arr.push(el) && el;

所以你可以这样做:

return push(readableStreams, new Readable())