3

次の関数を使用します。

// remove multiple, leading or trailing spaces
function trim(s) {
    s = s.replace(/(^\s*)|(\s*$)/gi,"");
    s = s.replace(/[ ]{2,}/gi," ");
    s = s.replace(/\n /,"\n");
    return s;
}

値の先頭と末尾の空白を削除しても問題ありません。キーの名前を変更できないことは知っていますが、目的の出力を達成するのに苦労しています。

$.each(data, function(index)
    {
        $.each(this, function(k, v)
        {
            data[index][trim(k)] = trim(v);
            data.splice(index, 1);
        });
    });

これは、目的の出力を達成していません。

何か案は?新しいオブジェクトを作成してから元のオブジェクトを破棄するのが最善でしょうか? その構文はどのようになりますか?

データの例:

var data = [{
    "Country": "Spain",
    "info info1": 0.329235716,
    "info info2": 0.447683684,
    "info info3": 0.447683747},
{
    " Country ": " Chile ",
    "info info1": 1.302673893,
    "info info2 ": 1.357820775,
    "info info3": 1.35626442},
{
    "Country": "USA",
    "info info1  ": 7.78805016,
    "info info2": 26.59681951,
    "info info3": 9.200900779}];
4

2 に答える 2

2
$.each(data, function(index) {
    var that = this;
    $.each(that, function(key, value) {
        var newKey = $.trim(key);

        if (typeof value === 'string')
        {
            that[newKey] = $.trim(value);
        }

        if (newKey !== key) {
            delete that[key];
        }
    });
});

デモ: http://jsfiddle.net/mattball/ZLcGg/

于 2012-04-10T19:17:12.973 に答える
0

この議論に遅れているかもしれませんが、このリンクからこの質問と回答を共有したいと思います。このソリューションは、上記のこのオブジェクトを処理するだけでなく、JavaScript オブジェクトのキーと値 (文字列型) を再帰的にトリミングします。

これが役立つことを願っています。

オブジェクトのキーと値の空白を再帰的に削除する

于 2015-11-04T19:40:13.397 に答える