Javascript 个对象运行时更改
Javascript objects runtime changes
好的,我认为我的问题很常见Javascript。
有一个带有成功回调的简单 ajax 调用。
ajax 调用 returns 产品列表。现在我需要这些产品的列表,这些产品按 ID 排序并按日期排序。
产品列表包含如下对象:
{
Id: 12345,
LastModified: "2015-01-05T14:53:18.493Z",
Name: "Beer"
}
这是我的示例代码:
var prodsAll;
var prodsNew;
$.ajax({
url:"getProds.php",
success:function(res) {
prodsAll= res;
prodsNew = res;
prodAll.sort(function (a, b) {
return a.Id > b.Id ? 1 : -1;
});
prodNew.sort(function (a, b) {
return new Date(b.LastModified).getTime() - new Date(a.LastModified).getTime();
});
}
});
无论我做什么,看起来我的所有列表都已更改!?
当我这样做时:
console.log(res);
console.log(prodsAll);
console.log(prodsNew);
我总是得到相同的结果:-/
怎么可能独立更改列表!?
这就是问题所在
prodsAll= res;
prodsNew = res;
它们对单个数组有相同的引用,你可以像这样重新复制它
prodsAll = res;
prodsNew = res.slice();
好的,我认为我的问题很常见Javascript。
有一个带有成功回调的简单 ajax 调用。
ajax 调用 returns 产品列表。现在我需要这些产品的列表,这些产品按 ID 排序并按日期排序。
产品列表包含如下对象:
{
Id: 12345,
LastModified: "2015-01-05T14:53:18.493Z",
Name: "Beer"
}
这是我的示例代码:
var prodsAll;
var prodsNew;
$.ajax({
url:"getProds.php",
success:function(res) {
prodsAll= res;
prodsNew = res;
prodAll.sort(function (a, b) {
return a.Id > b.Id ? 1 : -1;
});
prodNew.sort(function (a, b) {
return new Date(b.LastModified).getTime() - new Date(a.LastModified).getTime();
});
}
});
无论我做什么,看起来我的所有列表都已更改!?
当我这样做时:
console.log(res);
console.log(prodsAll);
console.log(prodsNew);
我总是得到相同的结果:-/
怎么可能独立更改列表!?
这就是问题所在
prodsAll= res;
prodsNew = res;
它们对单个数组有相同的引用,你可以像这样重新复制它
prodsAll = res;
prodsNew = res.slice();