javascript - 被第二个对象插入覆盖
问题描述
我只是想知道为什么我的第二次插入会覆盖我的第一个对象值。
const customer = {
name: '',
totalCups: 0
}
$('#btnAdd').click(function() {
debugger
var itemName = $('#customerName');
var itemTotalCups = $('#customerTotalCups');
// Basic Validation
if (itemName.val().trim() === "") {
return;
}
if (parseInt(itemTotalCups.val()) === 0) {
return;
}
customer.name = itemName.val();
customer.totalCups = itemTotalCups.val();
// Data structure Queue
order.unshift(customer);
console.log(order);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="input-group">
<input id="customerName" type="text" class="form-control" placeholder="Enter customer's name" />
<input id="customerTotalCups" type="number" class="form-control" placeholder="Enter number of cups" min="1" />
<span class="input-group-btn">
<button id="btnAdd" class="btn btn-default" type="submit">
<i class="fa fa-plus"></i>
</button>
</span>
</div>
<button id="btnAdd">Add</button>
<div id="CurentOrder"></div>
例如我得到的第一个插入,
0: {name: "Alan", totalCups: "1"}
当我使用另一个数据执行第二次插入时 .unshift ,它变成如下:
0: {name: "Alan", totalCups: "1"}
1: {name: "Alan", totalCups: "1"}
解决方案
尝试运行以下代码以查看客户对象和订单数组发生了什么,特别是在第二次调用时。应该清楚问题是什么:)
const customer = {
name: '',
totalCups: 0
}
let i = 0;
let order = [];
function add () {
customer.name = i++
customer.totalCups = Math.random ()
// Data structure Queue
order.unshift(customer);
console.log(order);
}
add ();
add ();
console.log (order)
console.log (order [0] === order [1])
推荐阅读
- javascript - 如何编写一个接受 2 个字符串的函数,并将它们添加到相应数组的开头
- json - Python 3.x 将 Unicode 文字作为它们的值写入文件
- java - Java - 在字符串中设置字段给定字段的名称
- jetty - 当以特定顺序部署多个 servlet 时,Jetty 8.1.16 返回 404
- java - what am I missing here? Basic Java
- excel - 同时输入到 2 个单元格
- c# - 使用 Linq 仅查找在标志列表中具有所有匹配值的记录?
- php - 如何使用 php mysql 运行循环,根据月份的总列值显示结果
- python - Python - 计算数据透视表中总计的百分比
- python - 如果反向关系不存在,为什么 Django 会停止执行?