6 回答

TA贡献1779条经验 获得超6个赞
因为你这个catag没有重新定义,都是指向同一个引用,你要在循环里面每次重新定义一个,或者直接push
for (let i in categories) {
catlist.push({cat: categories[i]})
}

TA贡献1828条经验 获得超3个赞

TA贡献1796条经验 获得超7个赞
catag 是一个对象,JS 中对象的互相赋值都是对值的引用,所以每次修改的项 都是 同一个项的值,导致了前面被覆盖。
var a = {aa: 123};
var b = a;
b.aa = 456;
a // {aa: 456}

TA贡献1943条经验 获得超7个赞
啊,你这样写 catag 我初一看,一位是系统内置,后来发现原来不是。js 里面经常会遇到这种问题,为什么我改动之后,按照逻辑不应该如此,为什么会发生一次改动,之前也被改动了呢?这个关键在于 js 的特性了,我也不是很懂,但知道这个原因就行。因为 你通过 push 将 catag 放入 catlist ,所以,你放的不是 catag 的值,而是 catag 这个对象,所以,你每次在改变 catag 的时候,并且又没有重新定义它。所以在最后的时候你可以这样看:`catag = ['cat':'教育'];
catlist = [catag,catag,catag,catag]`
就是这么个原因。解决方法有多个,一直接 push 对应应对参数结果。或者像楼上那样,每次重定义 catag 变量。
添加回答
举报