首页 > 解决方案 > 带有索引和值的 jQuery $.map

问题描述

目前,我像这样映射我的 JSON 文件:

var sortedData = $.map(response.data, function(data, index) {
    return [data];
});

这工作正常。但是缺少关键(索引)。我怎样才能添加它?

JSON文件的内容:

{
    "index": 5,
    "timestamp": 1570438008,
    "data": {
        "12": [
            "Title 2",
            "Description 2"
        ],
        "10": [
            "Title 1",
            "Description 1"
        ]
    }
}

在 $.map 之后我想对其进行排序(数据属性)。我是这样做的:

sortedData.sort(function(a, b) {
    return (b[3] < a[3]) ? -1 : 1;
});

预期输出:

"12": [
    "Title 2",
    "Description 2"
],
"10": [
    "Title 1",
    "Description 1"
]

..而不是这样:

"10": [
    "Title 1",
    "Description 1"
],
"12": [
    "Title 2",
    "Description 2"
]

标签: jqueryarraysjsonkey

解决方案


您正在返回[data]哪个返回 key 的值data,而不是您应该只返回data哪个将返回所有键的值,包括索引。

var jsonContent = {
    "index": 5,
    "timestamp": 1570438008,
    "data": {
        "12": [
            "Title 2",
            "Description 2"
        ],
        "10": [
            "Title 1",
            "Description 1"
        ]
    }
};
var sortedTicketsDesc = $.map(jsonContent, function(data, index) {
    return data;
});
console.log(sortedTicketsDesc);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


推荐阅读