js实现微信小程序setData函数
通过数据路径来修改数据的方式,用于处理复杂数据十分强大。
const data = {
link: {
title: 'xxxx',
goods: [{ name: '西瓜', price: 200 }, { name: '桃子', price: 100 }]
}
}
// 封装成object的原型方法
// Object是js的原生对象
Object.prototype.setData = function (path, value) {
// 通过正则表达式 查找路径数据
const regex = /([\w$]+)|\[(:\d)\]/g
const patten = path.match(regex)
console.log(patten)
let result = this // 指向调用的数据 如data
// 遍历路径 逐级查找 最后一级用于直接赋值
for (let i = 0; i < patten.length - 1; i++) {
const key = patten[i]
result = result[key]
}
result[patten[patten.length - 1]] = value
}
data.setData('link.goods[1].name', '苹果')
console.log(data)