Преобразовать вложенный массив в объект - PullRequest
2 голосов
/ 19 июля 2011

Я ищу решение переместить / преобразовать элементы массива в объект обратно, без использования ключей?

function pleaseBuy(){
    var args = arguments;
    for(var i = 0; i < arguments[0].length; ++i) {
        args += args[i];
    };
};

function getList(){
   return ["pepsi","cola","7up"];
}

var list = ({ favorite: "drpepper"}, getList())
pleaseBuy(list)

Ожидаемый результат:

args = ({ favorite: "drpepper"}, "pepsi", "cola", "7up")

Ответы [ 5 ]

2 голосов
/ 19 июля 2011

Нет необходимости в функции pleaseBuy, я бы сказал:

function getList(){
   return ["pepsi","cola","7up"];
}

var list = getList().concat( { favorite: "drpepper" } );
//                                     ^ NB should be :
// or favorite first
var list = [{ favorite: "drpepper" }].concat(getList());
/* 
   list now contains:
   ['pepsi, 'cola','7up',{ favorite: "drpepper" }]
*/

Объект всегда содержит пары ключ-значение.Если вы хотите преобразовать массив в объект, вам нужно будет присвоить ключи и значения.Например:

var arr = [1,2,3,4,'some'], arr2Obj = {};
for (var i=0;i<arr.length;i=i+1){
   arr2Obj[arr[i]] = i;
}

/* 
   arr2Obj now contains:
   { 
     1: 0,
     2: 1,
     3: 2,
     4: 3,
     some: 4
   }
*/

Другой пример:

var arr = [1,2,3,4,'some'], arr2Numbers = {};
for (var i=0;i<arr.length;i=i+1){
       arr2Numbers[arr[i]] = !isNaN(Number(arr[i]));
}
/* 
   arr2Numbers now contains:
   { 
     1: true,
     2: true,
     3: true,
     4: true,
     some: false
   }
*/
1 голос
/ 19 июля 2011

Используйте .unshift() документы для добавления в массив.

var list = getList();
list.unshift( { favorite="drpepper"});

// [{ favorite="drpepper"}, "pepsi", "cola", "7up"]

Демонстрация при http://jsfiddle.net/Ds9y5/

1 голос
/ 19 июля 2011

Вы имеете в виду функцию javascript push ?

0 голосов
/ 19 июля 2011
var s = getList();
s.unshift({ favorite : "drpepper"}); // at the first place in array
s.push({ favorite : "drpepper"}); // at the last place in array
alert(s);

Метод JavaScript push ()
JavaScript метод unshift ()

0 голосов
/ 19 июля 2011

Попробуйте это:

var array = ["pepsi","cola","7up"];
array.push({ favorite: "drpepper"});

Или

var array2 = ["pepsi","cola","7up"];
var array = [{favorite: "drpepper"}];
for(var ctr = 0 ; ctr < array2.length ; ctr++){
  array.push(array2[ctr]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...