Javascript Spread运算符指定对象中数组内的数据
我需要使用扩展运算符更新以下状态内的数据。 必须这样做,即Javascript Spread运算符指定对象中数组内的数据,javascript,spread-syntax,Javascript,Spread Syntax,我需要使用扩展运算符更新以下状态内的数据。 必须这样做,即数据[0]应更新为“vehOn”:“Finance” 修改后的状态应类似于: let modifiedstate = { "data": [{ "year": "2017", "make": "ALFA ROMEO", "model": "ILX 4D 2.0 PREMIUM PACKAGE", "vehOn": "Finance" }], "error": "" }; 据我所知,实现您的目标
数据[0]
应更新为“vehOn”:“Finance”
修改后的状态应类似于:
let modifiedstate = {
"data": [{
"year": "2017",
"make": "ALFA ROMEO",
"model": "ILX 4D 2.0 PREMIUM PACKAGE",
"vehOn": "Finance"
}],
"error": ""
};
据我所知,实现您的目标的唯一方法是:
let state={
“数据”:[{
“年份”:“2017年”,
“制造”:“阿尔法罗密欧”,
“型号”:“ILX 4D 2.0高级套装”
}],
“错误”:”
};
让modifiedstate={“data”:[{…state.data[0],…{vehOn:“Finance”}}],
“错误”:“};
console.log(modifiedstate)
如果您打算创建一个与state相同的对象,而您不知道state可以具有哪些属性,那么您应该寻找一种方法
否则,如果您完全确定state
的结构,并希望执行简单克隆,则可以执行以下操作:
let modifiedstate = "data": [{
...state.data[0],
"vehOn": "Finance"
}],
"error": ""
}
const state={
“数据”:[{
“年份”:“2017年”,
“制造”:“阿尔法罗密欧”,
“型号”:“ILX 4D 2.0高级套装”
}],
“错误”:”
};
console.log(“----状态----”;
console.log(状态);
const modifiedstate={…state,
数据:state.data.map((条目,i)=>i==0?({…条目,
韦洪:“金融”
}):输入)
};
console.log(“----modifiedstate----”;
console.log(modifiedstate)代码>“我需要…使用扩展运算符”-为什么?请正确设置问题/代码的格式?到目前为止,您尝试了什么?…可能…modifiedstate.data[0][“vehOn”]=“Finance”?@gaetanoM我正在尝试使用spread运算符完成它。@Andreas我尝试了以下实现,但没有按预期工作。:(让oldData=state.data[0];让newData={'vehOn':'finance'};让mergedData={…oldData,…newData};让mergedState1={…state.data,…mergedData};//不起作用让mergedState2={…state,data:[…state.data,mergedData]};//不起作用,但为什么需要使用扩展运算符?如果您打算克隆状态
,您应该知道扩展运算符不会进行浅拷贝。
let modifiedstate = "data": [{
...state.data[0],
"vehOn": "Finance"
}],
"error": ""
}