2011-07-19 60 views
2

我正在寻找解决方案,将数组项目推入/转换回对象,而不使用键?将嵌套数组转换为对象

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") 

回答

2

无需为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" }] 
*/ 

对象的llways包含键值对。如果你想将一个数组转换为一个对象,那么你将不得不分配键和值。例如:

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 
    } 
*/ 
0

试试这个:

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]); 
} 
相关问题