Remove leading and trailing spaces in object keys and values
<p>Using the following function:</p>

<pre><code>// 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;
}
</code></pre>

<p>removing the leading and trailing whitespaces in the value is not a problem. I know you can't rename keys, but I'm having difficulty acheiving the output I'm after.</p>

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

<p>This is not achieving the desired output.</p>

<p>Any ideas? Would it be best to create a new object and then destroy the original? What would that syntax look like?</p>

<p>Example of data:</p>

<pre><code>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}];
</code></pre>
