javascript - 我可以将特定数据添加到对象的属性吗?
问题描述
我知道下面的代码不正确,但我认为它会表明意图。这可能吗?我希望这个函数更新原始数组,所有 orderno 的格式都是 000.0.000.00000.0。
let cars= [
{orderno: "5766302385925", make: "Alfa", dealership: "NA"},
{orderno: "4663873261390", make: "Merc", dealership: "NA"},
{orderno: "8458821291579" , make: "BMW", dealership: "EU"},
{orderno: "3376768687480", make: "Ford", dealership: "NA"},
{orderno: "5186132840921", make: "Buick", dealership: "EU"},
];
function addOrderDot() {
for (var i=0; i<cars.length; i++) {
cars.orderno[i].splice(2,0,'.')
cars.orderno[i].splice(3,0,'.')
cars.orderno[i].splice(6,0,'.')
cars.orderno[i].splice(11,0,'.')
}
}
函数后所需的数组:
let cars= [
{orderno: "576.6.302.38592.5", make: "Alfa", dealership: "NA"},
{orderno: "466.3.873.26139.0", make: "Merc", dealership: "NA"},
{orderno: "845.8.821.29157.9" , make: "BMW", dealership: "EU"},
{orderno: "337.6.768.68748.0", make: "Ford", dealership: "NA"},
{orderno: "518.6.132.84092.1", make: "Buick", dealership: "EU"},
];
解决方案
更优雅的解决方案是使用简单的正则表达式来替换每个字符串:
let cars= [
{orderno: "5766302385925", make: "Alfa", dealership: "NA"},
{orderno: "4663873261390", make: "Merc", dealership: "NA"},
{orderno: "8458821291579" , make: "BMW", dealership: "EU"},
{orderno: "3376768687480", make: "Ford", dealership: "NA"},
{orderno: "5186132840921", make: "Buick", dealership: "EU"},
];
function addOrderDot() {
cars.forEach(car => {
car.orderno = car.orderno.replace(
/^(.{3})(.{1})(.{3})(.{5})(.{1})$/,
`$1.$2.$3.$4.$5`
)
})
}
解释:我们遍历汽车数组的元素,并将 orderno 数字逻辑分组为 5 组。
在正则表达式中,^ 表示字符串的开头,() 定义了我们以后可以用作变量的逻辑组,.{number} 表示字符数,$ 表示字符串的结尾。所以我们的正则表达式将一组 3 个字符分隔为 $1,一组 1 个字符分隔为 $2,依此类推。然后我们只需将初始字符串替换为“缝合”的逻辑组。
RegExp 一开始可能看起来有点混乱,但在处理字符串和明显的模式时可能是一个很好的工具。
推荐阅读
- flutter - 如何在颤动中缓存图像?
- python-3.x - Pandas DataFrame内存重新分配不会释放旧内存,很快就会导致OOM错误
- c# - 从游戏对象表面上的 RaycastHit 到 JellySurface 上游戏对象上的随机点
- mysql - 在数组中获取异步等待错误和空白值
- python - Python OpenCV 没有正确返回最后一帧
- flutter - 如何在颤动中创建可缩放的图像滑块?
- python - PyQt QScrollBar.setInvertedControls() 没有效果
- javascript - 如何将我的数组对象推送到 MongoDB
- c# - Xamarin Forms 在编辑器控件中获取光标位置
- node.js - 未捕获的语法错误:无法在模块外部使用导入语句 CHROME EXTENSION MV3