2011-07-19 63 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]); 
} 
相關問題