Javascript 对象运行时变化

标签 javascript jquery ajax

好吧,我认为我的问题是一个常见的 Javascript 问题。
A 有一个带有成功回调的简单 ajax 调用。
ajax 调用返回产品列表。现在我需要一个按 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 对象运行时变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27781776/

相关文章:

javascript - If/Else 函数是做两个部分而不是一个部分

javascript - VSCode 使用 JavaScript 自动导入 React Native

javascript - 使用用户输入对 JavaScript 中的对象数组进行排序

jquery - Ajax ResponseText 无需重新加载

javascript - Ajax 将值从 View 传递到 Controller

javascript - 使用 setState 时 React this 未定义

javascript - 在 ASP.NET 用户控件中,我想向客户端公开一个方法

javascript - 将新点添加到点数组中的正确位置

php - Laravel Ajax 响应和处理错误

javascript - 自动触发 DivMenu 第二个 li 元素