我的对象
const data = {
"rows": [
{
"code": "ct101",
"username": "admin",
"subscriptionExpiresOn": "2019-11-27T09:35:38.916Z",
},
{
"code": "bt101",
"username": "admin",
"subscriptionExpiresOn": "2016-11-27T08:20:57.297Z",
},
]
}
行数组中我的对象中有一个名为“ subscriptionExpiresOn”的键,
我要检查条件,如果subscriptionExpiresOn为 这是我使用地图方法尝试过的方法: 但是它不起作用。// Changing the value into 'Expired'
const data = {
"rows": [
{
"code": "ct101",
"username": "admin",
"subscriptionExpiresOn": "2019-11-27T09:35:38.916Z",
},
{
"code": "bt101",
"username": "admin",
"subscriptionExpiresOn": "Expired",
},
]
}
const now = new Date();
data.rows.map((index) => {
if (index.subscriptionExpiresOn < now) {
return {
subscriptionExpiresOn: 'Expired',
};
} else {
return data;
}
});
答案 0 :(得分:2)
您需要进行一些更改。首先,您需要将每个ooxml-schemas-*.jar
转换为一个日期对象,以便可以与row.subscriptionExpiresOn
进行正确比较。另外,除了已更新的键之外,您还需要返回该行,因此我正在使用ES6 spread syntax来完成此操作:
now
然后,如果您要保留结构,只需以原始格式返回即可:
const data = {
"rows": [
{
"code": "ct101",
"username": "admin",
"subscriptionExpiresOn": "2019-11-27T09:35:38.916Z",
},
{
"code": "bt101",
"username": "admin",
"subscriptionExpiresOn": "2016-11-27T08:20:57.297Z",
},
]
}
const now = new Date();
const mapped = data.rows.map((row) => {
if (new Date(row.subscriptionExpiresOn) < now) {
return {
...row,
subscriptionExpiresOn: 'Expired',
};
} else {
return row;
}
});
console.log(mapped);
答案 1 :(得分:2)
在尝试更改同一数组时,应使用 Array.forEach 。为了进行日期比较,您需要将字符串转换为日期对象。
const now = new Date();
const data = {"rows": [{"code": "ct101","username": "admin","subscriptionExpiresOn": "2019-11-27T09:35:38.916Z"},{"code": "bt101","username": "admin","subscriptionExpiresOn": "2016-11-27T08:20:57.297Z"}]};
data.rows.forEach(o => {
if(new Date(o.subscriptionExpiresOn) < now) o.subscriptionExpiresOn = 'Expired'
});
console.log(data.rows);
答案 2 :(得分:0)
它不起作用是因为:
map
的签名是一个函数,其第一个参数是项目而不是索引; 这是工作代码。
const data = {
"rows": [
{
"code": "ct101",
"username": "admin",
"subscriptionExpiresOn": "2019-11-27T09:35:38.916Z",
},
{
"code": "bt101",
"username": "admin",
"subscriptionExpiresOn": "2016-11-27T08:20:57.297Z",
},
]
}
const now = new Date();
const result = data.rows.map((item) => {
if (new Date(item.subscriptionExpiresOn) < now) {
return {
...item,
subscriptionExpiresOn: 'Expired',
};
} else {
return item;
}
});
console.log(result)