首页 > 解决方案 > 向 javascript 的 Array 类添加自定义函数会破坏数组声明

问题描述

在我的一个 Nodejs 项目中,我添加了一个来自 stackoverflow 的解决方案,用于查找两个数组之间的差异。

Array.prototype.diff = function (arr2) {
    return this.filter((x) => !arr2.includes(x));
};

直到今天,一切正常,但今天我的个人 cli 无缘无故坏了,我意识到,在数组声明中,nodejs 会自动将键值对添加到数组中。(键:差异,值:功能(arr2)...)

    const values = [];
    for (const i in values) {
        console.log(i, values[i]);
    }
    // diff [Function (anonymous)]

我已经从其他项目中删除了该功能,将 nodejs 升级到更高版本,但它仍然添加了上面的键值对。我怎样才能解决这个问题?

标签: javascriptnode.js

解决方案


最后,我已经修复了它。以前我已经发布了包含代码的 npm 库:

Array.prototype.diff = function (arr2) {
    return this.filter((x) => !arr2.includes(x));
};

它破坏了所有使用我的库的代码。今天我改变了代码

const diff = (arr1, arr2) => arr1.filter((x) => !arr2.includes(x));

推荐阅读