假设有以下情况:

const arr = [1, 2, 3];
const insertValues = [-1, 0];
const condition = true;
arr.splice(0, 0, condition ? ...insertValues : insertValues);

这会抛出一个语法错误:

意想不到的标记‘...’

我可以通过执行以下操作来实现这一点:

const arr = [1, 2, 3];
arr.splice(0, 0, ...[-1, 0]);

但这显然不是我想做的.我怎样才能让第一个例子起作用呢?我try 在我认为有必要的地方加上括号,但无济于事.

推荐答案

如果是操作符,if...可以工作,但是it isn't(不可能是),这是主要的语法.操作员不能做...所做的事情.运算符必须有一个值结果,但...没有.

所以,你需要扩展一个iterable.当你想直接插入insertValues时,你可以把insertValues包装在[]中(你的falsy操作数到条件运算符):

arr.splice(0, 0, ...(condition ? insertValues : [insertValues]));
// (Or you could use `unshift` if the index will always be 0 and you're never deleting anything)

(这可能是你在后面的问题中所指的.如果您想要将某物用作一系列参数,而这些参数可能是可迭代的,也可能不是,这并不是一种罕见的习惯用法.)

或者直接使用if/else.

Javascript相关问答推荐

我开始使用/url?q=使用Cheerio

togglePopover()不打开但不关闭原生HTML popover'

MongoDB中的引用

扫描qr code后出错whatter—web.js

如何找出摆线表面上y与x相交的地方?

未捕获错误:[]:getActivePinia()被调用,但没有活动Pinia.🍍""在调用app.use(pinia)之前,您是否try 使用store ?""

使用JQuery单击元素从新弹出窗口获取值

material UI按钮组样式props 不反射

基于props 类型的不同props ,根据来自接口的值扩展类型

当我在Reaction中创建一个输入列表时,我的输入行为异常

元素字符串长度html

一个实体一刀VS每个实体多刀S

有没有一种直接的方法可以深度嵌套在一个JavaScript对象中?

如何用javascript更改元素的宽度和高度?

在查看网页时,如何使HTML中的按钮工作方式类似于鼠标上的滚轮或箭头键?

输入的值的类型脚本array.排序()

MongoDB中的嵌套搜索

为什么在运行于<;img>;事件处理程序中的JavaScript中x和y是不可变的?

如何处理不带参数的redux thunk payloadCreator回调函数?

JavaScript -如何跳过某个字符(S)来打乱字符串中的字符