【问题标题】: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 } ) )

【问题讨论】:

  • 即{ ...{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 的奇异对象。

标签: javascript arrays object ecmascript-6 array.prototype.map


【解决方案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;
}

【讨论】:

    猜你喜欢
    • 2014-08-28
    • 2022-01-14
    • 2013-04-26
    • 1970-01-01
    • 2010-09-12
    • 2013-12-31
    • 2014-04-24
    • 1970-01-01
    • 2021-07-19
    相关资源
    最近更新 更多