const cond = false
const extraInfo = [
{
a: 11,
b: 25
},
{
a: 12,
b: 34
},
{
a: 1,
c: 99
}
]
const userInfo = [
{
z: 8
},
{
z: 10
},
...(cond && extraInfo)
]
当cond
为真时,我需要额外的和用户信息。
当cond
为false时,只需要userInfo。
问题是当cond
为假时,我得
TypeError :(中间值)(中间值)(中间值)[Symbol.iterator]不是函数
我的理解是我不允许使用布尔值作为展开元素,在这种情况下...false
。
但...( cond ? extraInfo : {} )
似乎也不起作用。
发生了什么事?
答案 0 :(得分:14)
只是做到了
...(cond ? extraInfo : [])
使用true进行演示
var cond = true;
var extraInfo = [
{
a: 11,
b: 25
},
{
a: 12,
b: 34
},
{
a: 1,
c: 99
}
];
var userInfo = [
{
z: 8
},
{
z: 10
},
...(cond ? extraInfo : [])
];
console.log( userInfo );
使用false进行演示
var cond = false;
var extraInfo = [
{
a: 11,
b: 25
},
{
a: 12,
b: 34
},
{
a: 1,
c: 99
}
];
var userInfo = [
{
z: 8
},
{
z: 10
},
...(cond ? extraInfo : [])
];
console.log( userInfo );
答案 1 :(得分:0)
另一种方式:
cond是真的:
var extraInfo = [
{
a: 11,
b: 25
},
{
a: 12,
b: 34
},
{
a: 1,
c: 99
}
]
var cond = true;
var userInfo = [
{
z: 8
},
{
z: 10
},
...(cond && extraInfo || [])
]
console.log(userInfo);

cond是假的:
var extraInfo = [
{
a: 11,
b: 25
},
{
a: 12,
b: 34
},
{
a: 1,
c: 99
}
]
var cond = false;
var userInfo = [
{
z: 8
},
{
z: 10
},
...(cond && extraInfo || [])
]
console.log(userInfo);

答案 2 :(得分:0)
const extraInfo = [
{
a: 11,
b: 25
},
{
a: 12,
b: 34
},
{
a: 1,
c: 99
}
];
const userInfo = [
{
z: 8
},
{
z: 10
},
];
const cond = true;
let getMyValue = cond ? [].concat(extraInfo, userInfo) : userInfo;
console.log(getMyValue)
答案 3 :(得分:0)
有条件地将实体传播到对象
console.log(
{
name: 'Alex',
age: 19,
...(true && { city: 'Kyiv' }),
...(false && { country: 'Ukraine' })
}
)
// { name: 'Alex', age: 19, city: 'Kyiv' }
有条件地将实体传播到 Array
console.log(
[
'Dan',
'Alex',
...(true ? ['Robin'] : [])
]
)
// [ 'Dan', 'Alex', 'Robin' ]
答案 4 :(得分:-1)
let getMyValue = cond ? [].concat(extraInfo, userInfo) : userInfo;
让我们检查一下
const extraInfo = [
{
a: 11,
b: 25
},
{
a: 12,
b: 34
},
{
a: 1,
c: 99
}
];
const userInfo = [
{
z: 8
},
{
z: 10
},
];
const cond = false;
let getMyValue = cond ? [].concat(extraInfo, userInfo) : userInfo;
console.log(getMyValue)