我希望能够返回数据结果集,只需将日期字段的格式更改为更易读的格式,而保留所有其他数据不变。我宁愿在没有第三方库的情况下这样做。
这是我目前所拥有的:
//Get all the Tasks
function getAllTasks() {
return models.gantt_tasks.findAll()
.then(function(tasks){
let results = tasks.map(task => task.start_date = task.start_date.format("YYYY-MM-DD"));
return results;
})
.catch(function(e) {
console.error(e);
return e;
});
}
我希望 map 在返回数据之前完成。
最佳答案
您可以使用 Object.assign(target, ...sources)
( here ),您希望通过保持其他值不变而仅更改其中一个值。
例如:
const object1 = {
a: 1,
b: 2,
c: 3
};
现在假设您要将 b
的值更改为 22
,您可以这样做:
const object2 = Object.assign({}, object1, {b: 22});
console.log(object1); // { a: 1, b: 2, c: 3 }
console.log(object2); // { a: 1, b: 22, c: 3 }
注意,这不会改变 object1 的值,它会创建一个新的空对象,如 Object.assign()
的第一个参数中定义的那样,它会向空对象添加更多参数,并且如果再次遇到相同的键,则更新该键的值。
这样你可以改变一个对象的一个甚至多个值。
Airbnb 的 JavaScript Style Guide() {}
说:
Prefer the object spread operator over
Object.assign
to shallow-copy objects.
// very bad
const original = { a: 1, b: 2 };
const copy = Object.assign(original, { c: 3 }); // this mutates `original` ಠ_ಠ
delete copy.a; // so does this
// bad
const original = { a: 1, b: 2 };
const copy = Object.assign({}, original, { c: 3 }); // copy => { a: 1, b: 2, c: 3 }
// good
const original = { a: 1, b: 2 };
const copy = { ...original, c: 3 }; // copy => { a: 1, b: 2, c: 3 }
您可以查看完整文档 here
关于javascript - 映射一个对象并使用 native JS 更改一个属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39462733/