在Node.js v 8.9.3上,扩展类上的方法Array.concat删除空值 - 为什么?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Node.js v 8.9.3上,扩展类上的方法Array.concat删除空值 - 为什么?相关的知识,希望对你有一定的参考价值。
我试图在没有改变Arrays
类的情况下将Array
的一些新功能添加到node.js中,避免了对其他模块的一些意外影响。
当我开始测试我的代码时,我发现了一些失败,我终于找到了原因。 concat
方法在扩展后表现不同。
这对我来说很奇怪。这是预期的行为?
非常短的版本,看到问题:
class MyArray extends Array{};
/*
* Test with values
*/
var sizeValueArray = new Array(4,4,4).concat([1,2,3]).length;
var sizeValueMyArray = new MyArray(4,4,4).concat([1,2,3]).length;
console.log( "size from concat values array = ", sizeValueArray );
console.log( "size from concat values my array = ", sizeValueMyArray );
if( sizeValueArray != sizeValueMyArray ) {
console.log("this is strange");
} else {
console.log("as expected.")
}
/*
* Test with empty values
*/
var sizeEmptyArray = new Array(5).concat(new Array(6) ).length;
var sizeEmptyMyArray = new MyArray(5).concat(new MyArray(6) ).length;
console.log( "size from concat empty array = ", sizeEmptyArray);
console.log( "size from concat empty my array = ", sizeEmptyMyArray );
if( sizeEmptyMyArray != sizeEmptyArray ) {
console.log("this is strange");
} else {
console.log("as expected.")
}
您可以在浏览器中看到,这两个操作的结果是相同的。但不是在node.js中,你可以在这里看到https://repl.it/@thiagodamata/ArrayConcatStrangeBehaviorOnExtend
答案
看起来这个bug在最近的版本中得到了修复。你可以看到在这个repl工作。所以,这是一个已经修复的错误。
以上是关于在Node.js v 8.9.3上,扩展类上的方法Array.concat删除空值 - 为什么?的主要内容,如果未能解决你的问题,请参考以下文章
在 Elastic Beanstalk 上扩展 Nginx - Node JS