在VS Code的调试控制台中,toSpliced()方法抛出了TypeError错误。

5
我在VS Code的调试控制台上遇到了以下错误:
"Uncaught TypeError TypeError: months.toSpliced is not a function"
当我运行这段代码时。
const months = ["Jan", "Mar", "Apr", "May"];

// Inserting an element at index 1
const months2 = months.toSpliced(1, 0, "Feb");
console.log(months2); // ["Jan", "Feb", "Mar", "Apr", "May"]

这甚至不是我的代码,我是从这里复制粘贴的; https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toSpliced

在尝试学习toSpliced()方法时,我遇到了这个错误。

任何帮助将不胜感激。谢谢。


你有检查那个页面末尾的兼容性表格吗?你使用的是足够新的Node.js版本吗? - Barmar
谢谢 @Barmar 这是我的节点版本。不过,我选择了 splice 方法。 - Ubeydullah Keleş
1个回答

9

Array.prototype.toSpliced()是node.js的相对较新的特性,不属于ECMAScript标准的一部分。即使Chrome也仅从110版本开始支持这些方法,而node仅从20.0.0版本开始支持(您可以在终端中输入node -v来检查当前安装的node版本)。

如果您遇到问题,可以尝试用以下代码替换:

const months = ["Jan", "Mar", "Apr", "May"];

// Inserting an element at index 1
const months2 = months.slice(); // create a copy of the array
months2.splice(1, 0, "Feb");

console.log(months);   // ["Jan", "Mar", "Apr", "May"]
console.log(months2);  // ["Jan", "Feb", "Mar", "Apr", "May"]
splice方法和toSpliced的区别在于,splice会修改原始数组,而toSpliced则返回一个新的数组,其中指定的元素被移除,原始数组保持不变。

感谢您的反馈。确实,问题出在我的Node版本上。 但是,我没有更新我的Node,而是像您建议的那样使用了splice方法。我只是需要更加深入地思考我的问题。 :) - Ubeydullah Keleş
这可能是新的,但现在它已经成为了标准的一部分,看起来是这样的:https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.tospliced我认为它是在 ECMAScript 2023 中添加的。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接