【发布时间】:2017-08-19 06:57:27
【问题描述】:
我正在使用扩展语法替换数组中的对象,但我无法将该对象添加为数组的新条目。
state = {8xf0y6ziyjabvozdd253nd:[
{
"id": "894tuq4ut84ut8v4t8wun89g",
"parentId": "8xf0y6ziyjabvozdd253nd",
"timestamp": 1503045227866,
"body": "Hi there! I ams a COMMENTSsg.",
"author": "thingtwo",
"voteScore": 143,
"deleted": false,
"parentDeleted": false
},
]}
首先我找到我想用这个函数替换的元素的索引:
let index = state[payload.id].findIndex((element)=> element.id === payload.data.id)
然后我使用扩展语法创建一个新状态并替换数组内部的元素:
return { ...state,
[payload.id]:[...state[payload.id],index=payload.data]
}
但它会返回这个:
{8xf0y6ziyjabvozdd253nd:[
{
"id": "894tuq4ut84ut8v4t8wun89g",
"parentId": "8xf0y6ziyjabvozdd253nd",
"timestamp": 1503045227866,
"body": "Hi there! I am a COMMENTS.",
"author": "thingtwo",
"voteScore": 143,
"deleted": false,
"parentDeleted": false
},
{
"id": "894tuq4ut84ut8v4t8wun89g",
"parentId": "8xf0y6ziyjabvozdd253nd",
"timestamp": 1503045227866,
"body": "Hi there! I am a COMMENTS Replace",
"author": "thingtwo",
"voteScore": 143,
"deleted": false,
"parentDeleted": false
}
]}
预期输出:
{8xf0y6ziyjabvozdd253nd:[
{
"id": "894tuq4ut84ut8v4t8wun89g",
"parentId": "8xf0y6ziyjabvozdd253nd",
"timestamp": 1503045227866,
"body": "Hi there! I am a COMMENTS Replace",
"author": "thingtwo",
"voteScore": 143,
"deleted": false,
"parentDeleted": false
}
]}
【问题讨论】:
-
没有“扩展运算符”。有“扩展语法”或“扩展符号”。实际上有“数组扩展语法”和“对象扩展语法”,所以弄清楚你在说什么会很有用。
-
你能添加预期的输出吗?
-
datainindex=data是什么...你想将data的值分配给index吗? -
@torazaburo 我猜这取决于..docs.microsoft.com/en-us/scripting/javascript/reference/…,不知何故,MDN URL 以/Operators/Spread_operator 结尾
-
谢谢,说我是“扩展语法”而不是“扩展运算符”,我编辑了问题,并包含了预期的输出。
标签: javascript