我有一组 javascript 对象(长度不定)。
var records =
[
{ query_result_id: 373,
url: 'https://www.example1.com/hheyue',
title: 'title1',
uselesskey3: 'yo',
uselesskey4: 'ya',
max_email_nb_sent: 1 },
{ query_result_id: 375,
url: 'https://www.example2.com',
title: 'title2',
uselesskey3: 'yo',
uselesskey4: 'ya',
max_email_nb_sent: null }
//and so on...]
我今天通过做一些事情来基于记录创建一个名为parametersObj的新对象(为了不变性原因保持记录不变):
var parametersObj = records
//remove useless keys
.map(({
title,uselesskey3, uselesskey4, max_email_nb_sent,
...item
}) => item)
//add new needed keys
.map(s => (
{
...s,
status: process.env.CONTEXT === "production" ? "prod" : "dev",
triggered_at: new Date().toLocaleString()
}
));
这完美地工作。
但是我现在要做的是在创建parametersObj一个方法时添加上面的代码,在删除无用的键(.map上面的第一个)之前,我添加一个email_nb为每个 javascript 对象调用的新键,该键等于:
0如果max_email_nb_sent是null
max_email_nb_sent + 1如果max_email_nb_sent是not null
我们执行脚本后parametersObj的期望值应该是:
[
{ query_result_id: 373,
url: 'https://www.example1.com/hheyue',
title: 'title1',
email_nb: 2,
status: "prod",
triggered_at: '2019-9-30 23:11:12'
},
{ query_result_id: 375,
url: 'https://www.example2.com',
title: 'title2',
email_nb: 0,
status: "prod",
triggered_at: '2019-9-30 23:11:12' }
//and so on...]
我可以使用 ES6,如果可能的话,我更喜欢使用更简洁的方式。
我试过这个,但下面这个不起作用
var parametersObj = records
//adding the new key email_nb
.map(s=> s["email_nb"] = s["max_email_nb_sent"] + 1)
//remove useless keys
.map(({
title,uselesskey3, uselesskey4, max_email_nb_sent,
...item
}) => item)
//add new needed keys
.map(s => (
{
...s,
status: process.env.CONTEXT === "production" ? "prod" : "dev",
triggered_at: new Date().toLocaleString()
}
));
但随后 parametersObj 变得正好等于 [1, 1] 这是非常错误的......
炎炎设计
相关分类