JavaScript里方括号[]的使用

我们知道可用方括号来表示数组或者JSON对象的属性值,其实在特定场合,方括号还有妙用的。

比如我有数据源是一组JSON,其中有一个属性是时间字符串,我想对时间的小时、星期、日、月分别进行处理。每条JSON都各自生成一条新的JSON,传入参数field="hour"时,取小时,存入"hour"字段;传入参数是field="day"时,取星期,存入"day"字段,传入参数field="date"时,取日期,存入"data"字段,传入参数是field"month"时,取月份,存入"month"字段。下面是例程,用到了方括号的两种方法,还真不好用其他方式替代:

javascript 复制代码
function showchart(dataset,field,getarg,offset) {
...
let trans=dataset.map(item=>({[field]:(new Date(item.rectime))[getarg]()-offset}))
...
}
...
showchart(ds,"hour", "getHours",0)
showchart(ds,"day", "getDay",0)
showchart(ds,"date", "getDate",1)
showchart(ds,"month", "getMonth", 0)

函数里offset是一个偏移量,这里说一下JavaScript里时间相关的函数有些地方与常理有些出入,getHours()取出来的小时没有异议,getDay()星期日是0,星期一到星期六分别对应1-6,也没有毛病,getDate()出来的结果就是日期,1-31没有毛病吧,但是如果你用它的值当作数组下标的话,就没有0,还得自己再折腾转换下,我就干脆-1,从0开始,getMonth(),这个跟getDate()又不是一个逻辑了,这个一月是0,十二月是11,理解起来要加1,不过值用作数组下标的话,刚刚好。

代码里[field]你如果去掉方括号的话,就是field作为key了,而不是field的值作为key,obj[getarg](),这种表示obj对象的一个调用方法,方法名是传入参数getarg这个字符串的值。

相关推荐
badhope4 小时前
Mobile-Skills:移动端技能可视化的创新实践
开发语言·人工智能·git·智能手机·github
码云数智-园园5 小时前
微服务架构下的分布式事务:在一致性与可用性之间寻找平衡
开发语言
还是大剑师兰特5 小时前
Vue3 中的 defineExpose 完全指南
前端·javascript·vue.js
qqxhb5 小时前
11|结构化输出:为什么 JSON 能让系统更稳定
json·ai编程·结构化·规范模板
C++ 老炮儿的技术栈5 小时前
volatile使用场景
linux·服务器·c语言·开发语言·c++
hz_zhangrl5 小时前
CCF-GESP 等级考试 2026年3月认证C++一级真题解析
开发语言·c++·gesp·gesp2026年3月·gespc++一级
泯泷5 小时前
阶段一:从 0 看懂 JSVMP 架构,先在脑子里搭出一台最小 JSVM
前端·javascript·架构
Liu628885 小时前
C++中的工厂模式高级应用
开发语言·c++·算法
IT猿手5 小时前
基于控制障碍函数的多无人机编队动态避障控制方法研究,MATLAB代码
开发语言·matlab·无人机·openclaw·多无人机动态避障路径规划·无人机编队
AI科技星6 小时前
全尺度角速度统一:基于 v ≡ c 的纯推导与验证
c语言·开发语言·人工智能·opencv·算法·机器学习·数据挖掘