如何为JavaScript数组对象添加moment.js日期格式化语法并避免转为字符串
解决moment.js格式化语法被转为字符串的问题
我懂你遇到的困扰了——你本来想把数组里的日期用moment.js转成DD/MM/YYYY格式,但写出来的moment调用代码却被当成了字符串,根本没执行格式化逻辑对吧?
问题根源
你大概率是直接把moment('xxx').format('DD/MM/YYYY')当成字符串写进了对象里,或者在某些不支持执行JS函数的场景(比如静态JSON)里尝试这么做,导致代码没有被解析执行,反而变成了字符串字面量。
正确的实现方式
你需要用JavaScript的数组方法实际执行moment的格式化逻辑,而不是手动硬写字符串。这里用map方法遍历原数组,生成新的格式化后的数据数组:
// 先确保已经引入moment.js:浏览器通过script标签,Node环境先npm install moment再require const moment = require('moment'); const data = [ { date: '2018-04-11T00:00:00.000+07:00', price: 5000 }, { date: '2018-04-03T00:00:00.000+07:00', price: 2000 } ]; // 遍历数组,对每个对象的date字段执行moment格式化 const data2 = data.map(item => ({ ...item, // 保留原对象的其他属性(比如price) date: moment(item.date).format('DD/MM/YYYY') // 实际执行格式化,返回处理后的字符串 })); console.log(data2); // 输出结果就是你期望的: // [ { date: '11/04/2018', price: 5000 }, { date: '03/04/2018', price: 2000 } ]
注意事项
- 一定要确保moment.js已经正确引入到你的项目中:浏览器环境可以通过CDN或者本地script标签引入,Node.js环境需要先安装依赖再require。
- 如果是在静态JSON文件里,是没办法直接写函数调用的——JSON只能存储静态数据。这种情况你需要先在JS代码里处理好data数组,再把处理后的data2作为最终数据使用。
内容的提问来源于stack exchange,提问作者Pengguna
相关产品推荐
相关产品推荐

