2013-08-17 3 views
0

JSON У меня есть объект массива JavaScript, который выглядит как-то ниже:Манипуляция

var Array = [{"foo1":"bar1","foo2":"bar2","foo3":"bar3","foo4":"bar4","foo5":"bar5","foo6":"bar6","foo7":"bar7"}, 
{"foo1":"bar5","foo2":"bar6","foo3":"bar7","foo4":"bar8","foo5":"bar9","foo6":"bar10","foo7":"bar10"}] 

Я хочу это массив, который будет преобразован в JSON отформатированную строку для сериализации, который выглядит примерно так. Я использую JSON.stringify для сериализации, который должен дать мне получившийся строку, как показано ниже:

'"fooAry" : [{"foo1":"bar1","foo2":"bar2","foo3":"bar3","foo4":"bar4"}, 
{"foo1":"bar5","foo2":"bar6","foo3":"bar7","foo4":"bar8"}]' 

Как вы можете видеть, что есть две вещи здесь:

  1. избавившись от последних 3-х элементов ключевые значения пары внутри массива
  2. , добавляя ключ fooAry к полученной строке JSON.
+0

Ключ/значение не действительно внутри массива, то есть они есть, но что более важно, они внутри объект, и поскольку заказ не гарантируется в объекте, просто удаление трех последних записей может не делать то, что вы хотите. – adeneo

+0

Кроме того, не используйте 'Array' в качестве вашего имени var, это может серьезно испортить другой код. – bfavaretto

+0

@adeneo Сценарий, который я работаю, гарантирует мне порядок последних трех трех пар ключ/значение, и поэтому я хочу вручную удалить его. – Raghu

ответ

1

Asuming вы действительно может гарантировать порядок элементов в объекте: пары

var a = [ 
    {"foo1":"bar1","foo2":"bar2","foo3":"bar3","foo4":"bar4","foo5":"bar5","foo6":"bar6","foo7":"bar7"}, 
    {"foo1":"bar5","foo2":"bar6","foo3":"bar7","foo4":"bar8","foo5":"bar9","foo6":"bar10","foo7":"bar10"} 
]; 

// Object.keys polyfill 
if (!Object.keys) Object.keys = function(o){ 
    var ret=[], p; 
    for (p in o){ 
     if (Object.prototype.hasOwnProperty.call(o, p)){ 
      ret.push(p); 
     } 
    } 
    return ret; 
} 

function removeLast3(obj){ 
    var ks = Object.keys(obj).slice(0, -3); 
    var newobj = {}, k, i; 
    for (i=0; k=ks[i]; i++){ 
     newobj[k] = obj[k]; 
    } 
    return newobj; 
} 

var newA = [removeLast3(a[0]), removeLast3(a[1])]; 
var strA = '"fooAry": ' + JSON.stringify(newA);