javascript - 使用 javascript 返回新形式的对象数组

标签 javascript arrays json object

我的目标:

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 是 < new Date()。我需要这样的输出:

// 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",
    },
  ]
}

这是我使用 map 方法尝试的:

const now = new Date();

data.rows.map((index) => {
  if (index.subscriptionExpiresOn < now) {
    return {
      subscriptionExpiresOn: 'Expired',
    };
  } else {
    return data;
  }
});

但它不起作用。

最佳答案

当您尝试改变同一个数组时,您应该使用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);

关于javascript - 使用 javascript 返回新形式的对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53568806/

相关文章:

c - 我正在尝试使用 C 解决给定总线数量的最大平台数量问题。我遇到错误并卡在那里

c# - 清理导入的数据以确保它可以转换为有效的 JSON

javascript - 使用 JQuery 从 <select> 控件获取自定义 html 属性

javascript - 使用 CSS ":before"将内联 block DIV 居中会破坏文本的垂直和水平居中

PHP数组复制某些键,内置函数?嵌套循环性能?

javascript - 迭代 json 数组以填充下拉列表 - angularjs

java - google-http-java-client json 更新现有对象

java - 在java中将树结构从数据库转换为JSON对象?

javascript - 在 angularJS 中取消后不会检查 radio

javascript - 在加载函数外部访问变量