...var 在 Array.prototype.map() 上的含义是啥 [重复]
Posted
技术标签:
【中文标题】...var 在 Array.prototype.map() 上的含义是啥 [重复]【英文标题】:what does ...var means on Array.prototype.map() [duplicate]...var 在 Array.prototype.map() 上的含义是什么 [重复] 【发布时间】:2019-10-18 14:35:25 【问题描述】:我在创建匿名函数和使用 map 方面相当陌生,...i
在以下代码行中是什么意思。 tia
const airlines = this.state.airlines.map(i => (
...i, editing : this.state.editing && i===item
)
)
【问题讨论】:
它是传播运算符。 developer.mozilla.org/en-US/docs/Web/javascript/Reference/… 即 ...a: 1, b: 2, c: 3
是 a: 1, b:2, c:3
和[ ...[1, 2, 3], 4 ]
是[1, 2, 3, 4]
@user202729 是的,分配给将由map
的回调返回的对象的键
@Kaiido 再次阅读链接的问题和答案后,看起来 answer 包含对象的扩展语法,但不包含问题。也许应该更改问题标题。
@user202729 我们目前无法判断i
是什么。链接的问题处理最常见的情况(对象和数组),我怀疑 OP 使用的是具有自己 Symbol.iterator 的奇异对象。
【参考方案1】:
它被称为spread syntax,在当前上下文中它涉及复制一个对象。和这样做是一样的:
const airlines = this.state.airlines.map(object =>
object.editing = this.state.editing && object === item;
return object;
);
所以我们要做的是创建对象的浅表副本,并向其添加属性。这就是扩展语法的目的——制作浅拷贝,或为浅拷贝收集项目(称为休息语法——收集其余项目)。这是展开语法的简化示例:
const arr = [
name: "Jack"
,
name: "Joe"
];
const res = arr.map(e => ( ...e,
age: Infinity
));
console.log(res);
.as-console-wrapper
max-height: 100% !important;
top: auto;
【讨论】:
以上是关于...var 在 Array.prototype.map() 上的含义是啥 [重复]的主要内容,如果未能解决你的问题,请参考以下文章