You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改对象数组中的日期字段并替换原数据?

解决方法:修改数组对象中的日期字段并替换原值

首先,咱们来看你当前代码的问题:你把截取后的日期存入了一个新的date数组,然后又把这个数组追加到了$scope.sessions末尾,这就导致原数组最后多了一个包含所有短日期的数组元素,而不是修改每个对象里的date字段。

正确的做法:直接修改每个对象的date字段

你只需要在循环里直接操作数组中的每个对象,替换它的date属性即可,不需要额外的数组来存储。比如:

const getSessions = () => {
  loginService.getUser().then((response) => {
    const user_id = response.data.id;
    console.log("getUser returning this => ", response.data);
    
    loginService.getUserSessions(user_id).then((response) => {
      $scope.sessions = response.data;
      
      // 循环每个会话对象,直接修改date字段
      for (let i = 0; i < $scope.sessions.length; i++) {
        // 注意:你代码里写的是next_class,这里假设实际是date字段,根据你的需求调整
        $scope.sessions[i].date = $scope.sessions[i].date.slice(0, 10);
      }
      
      console.log($scope.sessions); // 现在每个对象的date已经是短格式了
    });
  });
};

更健壮的日期处理方式(可选)

如果你的日期格式可能有变动,或者想避免直接字符串截取的局限性,可以用Date对象来处理,确保格式正确:

for (let i = 0; i < $scope.sessions.length; i++) {
  const dateObj = new Date($scope.sessions[i].date);
  // 格式化YYYY-MM-DD
  const formattedDate = `${dateObj.getFullYear()}-${String(dateObj.getMonth() + 1).padStart(2, '0')}-${String(dateObj.getDate()).padStart(2, '0')}`;
  $scope.sessions[i].date = formattedDate;
}

为什么你的原代码不行?

  • date.push(...)是把截取的日期一个个加到date数组里
  • $scope.sessions.push(date)是把整个date数组作为一个新元素添加到$scope.sessions的最后,而不是修改原有对象的属性

这样修改后,你的$scope.sessions数组里的每个对象都会保留原有的其他字段,同时date字段被替换成了你想要的短格式。

内容的提问来源于stack exchange,提问作者J. Perk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:31:37