function () {
let that =this
let dbt = [{},{},{},{},{},{}]
DB.collection("lchbook").orderBy('jytime','asc').where({jystate :true}).skip(0).limit(0).get({success:(res)=>{
console.log("dbtmp",dbt)
const DB_tmp = new Array(res.data.length).fill({})
for (let i=0;i<res.data.length;i++){
DB_tmp[i].jyren = res.data[i].jyren
DB_tmp[i].bookname = res.data[i].bookname
DB_tmp[i].jydate = res.data[i].jydate
DB_tmp[i].isbn = res.data[i].isbn
DB_tmp[i].day = that.jieyuedate(res.data[i].jytime)
}
that.setData({DB_jy:DB_tmp})
console.log("DBjy",that.data.DB_jy)
} })
},
如果我用dbt来 做FOR语句里的赋值,出来的结果就是正常的,6个值都是查询的结果。
但是我用DB_tmp来赋值,最后的结果就是6个值都是一样的,查询数据里的最后一个结果
因为.fill({})不是创建6个空的{}, 而是6个同时指向一个{}
当一个对象被传递给
fill
方法的时候, 填充数组的是这个对象的引用。https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/fill