按数字顺序对localstorage键进行排序

时间:2012-12-07 04:00:45

标签: javascript html5 local-storage

我有一个功能,可以获取本地存储的所有密钥,并通过电子邮件发送给您:

function sendLocalStorageByEmail(recipient) {
// create localstorage string
var output = "";


for (var key in localStorage) {
    output += key + "\n";
    output += localStorage[key] + "\n";
    output += "\n";
}

// create temporary anchor to emulate mailto click in new tab
var anchor = document.createElement("a");
anchor.href = "mailto:" + recipient + "?subject=Names for tonight&body=" + encodeURIComponent(output);
anchor.style.display = "none";
anchor.setAttribute("target", "_blank");
anchor.appendChild(document.createTextNode(""));
document.body.appendChild(anchor);

if (anchor.click) {
    return anchor.click();
}

由于键是一个四位数字,我想先通过数字顺序对它们进行排序。我的问题是,因为localstorage数据存储为字符串,并且大多数排序是通过数组完成的。我是否必须将其转换为数组,然后再返回?

如果有人可以帮助我,我们将不胜感激。

2 个答案:

答案 0 :(得分:2)

function sendLocalStorageByEmail(recipient) {
    var output = '',
        arr = [],
        anchor = document.createElement("a");

    for (key in localStorage) {
        if (localStorage.hasOwnProperty(key) && !isNaN(key)) {
            arr.push(key);
        }
    }

    arr.sort(function(a, b) {
        return a.toLowerCase().localeCompare(b.toLowerCase());
    });

    for (var i=0; i<arr.length; i++) {
        output += arr[i] + "\n" + localStorage[arr[i]] + "\n\n";
    }

    anchor.href = "mailto:" + recipient + "?subject=Names for tonight&body=" + encodeURIComponent(output);
    anchor.style.display = "none";
    anchor.setAttribute("target", "_blank");
    anchor.appendChild(document.createTextNode(""));
    document.body.appendChild(anchor);

    if (anchor.click) {
        return anchor.click();
    }
}​

答案 1 :(得分:1)

可能你可以尝试这样: -

var output = [];

for (var key in localStorage) {
    output.push(localStorage[key]);
}
output.sort();
var result=output.join();
var len = result.length;
var formatresult;
for (var i=0; i<len; i++) {
formatresult+= result[i]+ "\n";
}