开发中容易遇到的问题

  1. js中数组push对象,原有的值总是被最后一次的值覆盖的问题

js中数组push对象,原有的值总是被最后一次的值覆盖的问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script setup lang="ts">
interface List {
idx?: number,
value: string
}
const dataList: List[] = reactive([])
const list:List = {value:''}
const addInput = () => {
data.idx = dataList.length+1
dataList.push(list)
console.log(dataList)
}
</script>
输出dataList的值
//[{"value":"","idx":1}]
//[{"value":"","idx":2},{"value":"","idx":2}]
//[{"value":"","idx":3},{"value":"","idx":3},{"value":"","idx":3}]

原因:dataList中保存的是list的地址,最后一次改变list.name以后,dataList中引用的地址的值也已经被改变。

解决方案:最简单的就把list的定义写在方法内部。其他方案自行研究


---