我有一个对象
{
"_id" : "6QMR4A23KEXCFJDof",
"userId" : "3Xb6teoWNnEMWKzgq"
"title" : "My title",
"lines" : [
{
"id" : "5eafc0186f0cc7c5c4bb1989",
"text" : "First line...",
"align" : "left"
},
{
"id" : "eb1b5ef1212d2c0099716bd7",
"text" : "Second line...",
"align" : "left"
}
]
}
如何更新"文字" "线" id =" eb1b5ef1212d2c0099716bd7"使用javascript ES6? 谢谢!
答案 0 :(得分:2)
如果您的对象是obj
:
obj.lines.forEach(l => {
if (l.id === 'eb1b5ef1212d2c0099716bd7') {
l.text = 'your new text';
}
});
您可能希望在更通用的函数中使用此代码/重构它以适合您的目的。
答案 1 :(得分:1)
您可以通过以下方式执行此操作
let obj = {
"_id" : "6QMR4A23KEXCFJDof",
"userId" : "3Xb6teoWNnEMWKzgq",
"title" : "My title",
"lines" : [
{
"id" : "5eafc0186f0cc7c5c4bb1989",
"text" : "First line...",
"align" : "left"
},
{
"id" : "eb1b5ef1212d2c0099716bd7",
"text" : "Second line...",
"align" : "left"
}
]
}
let idx = obj['lines'].findIndex((obj2) => obj2.id == "eb1b5ef1212d2c0099716bd7");
obj['lines'][idx].text = 'newVal';
console.log(obj);
答案 2 :(得分:1)
您只想使用Array.filter过滤您的数组,并找到具有提供的ID的对象。然后,当您拥有该对象时,您只需修改其属性即可。以下是一个例子
let obj = {
_id: "6QMR4A23KEXCFJDof",
userId: "3Xb6teoWNnEMWKzgq",
title: "My title",
lines: [
{
id: "5eafc0186f0cc7c5c4bb1989",
text: "First line...",
align: "left"
},
{
id: "eb1b5ef1212d2c0099716bd7",
text: "Second line...",
align: "left"
}
]
};
const updateLine = (id, property, newValue) => {
let lineToUpdate = obj.lines.filter(line => line["id"] === id)[0][property] = newValue
}
updateLine("eb1b5ef1212d2c0099716bd7", "text", "newValue");