2016-09-13 125 views
-3

這很簡單。我有這樣的:javascript中的嵌套對象的簡單數組對象

[{"key":"jim","values":{"count":2,"total":79}}, 
{"key":"carl","values":{"count":1,"total":120}}, 
{"key":"stacy","values":{"count":3,"total":90}}] 

,我想這一點:關於嵌套對象

[{ "key": 'jim', count: 2, total: 79 }, 
    { "key": 'carl', count: 1, total: 120}, 
    { "key": 'stacy', count:3, total: 90}]; 

我讀過的東西,和其他類型的JavaScript數據操作的,但我解決不了我的問題。我想我需要使用.map方法,但我無法使其工作。謝謝。

+1

只是使用正常循環。不要混淆.map,直到你有基本的循環。 –

+0

我是初學者什麼是正常循環? –

+2

我們究竟是怎麼神奇地將'jim'映射到'Louise'或類似的?!如果你是初學者,從初學者的教程開始並着手。 SO不適合尋求教程。 –

回答

1

試試這個朋友!正如你所說,你是初學者,我做了一個循序漸進的基本循環,請仔細閱讀代碼。 這段代碼適用於動態的一級嵌套對象。

var arr = [{"key":"jim","values":{"count":2,"total":79}}, 
    {"key":"carl","values":{"count":1,"total":120}}, 
    {"key":"stacy","values":{"count":3,"total":90}}] 

var newArr = []; 
for (var i = 0; i < arr.length; i++) { 
    var currentObj = arr[i]; 
    var Obj = {}; // Temporary object 
    for (var key in currentObj) { 
     if (typeof currentObj[key] === 'object') { // If it is nested object 
     for (var deepkey in currentObj[key]) { // Loop again 
      Obj[deepkey] = currentObj[key][deepkey]; 
     } 
     } 
    else { 
     Obj[key] = currentObj[key]; 
    } 
    } 
    newArr.push(Obj); 
} 

console.log(newArr); // [{ "key": 'jim', count: 2, total: 79 }, 
         { "key": 'carl', count: 1, total: 120}, 
         { "key": 'stacy', count:3, total: 90}]; 

將工作於不同的輸入

var arr = [{"key":"jim", "hey": {"ting": "bing"} ,"values": {"count":2,"total":79}}, 
{"key":"carl","values":{"count":1,"total":120}}, 
    {"key":"stacy","values":{"count":3,"total":90}}] 

動態一層嵌套對象

演示鏈接:https://jsbin.com/nojafo/6/edit?html,js,console

0

使用for循環,使與格式你想要一個新的數組。

var initial = [{"key":"jim","values":{"count":2,"total":79}}, 
{"key":"carl","values":{"count":1,"total":120}}, 
{"key":"stacy","values":{"count":3,"total":90}}]; 

var target = []; 
var obj = {}; 
for(var i = 0; i< initial.length; i++) { 
    obj = {"key": initial[i].key, count: initial[i].values.count, total: initial[i].values.total}; 
    target.push(obj); 
    } 

console.log(target); 
+0

好一個哥們!但是,如果嵌套對象有超過2個項目/動態嵌套項目,這個解決方案將不起作用 – KrishCdbry

-1

好的。我終於找到了對我來說更簡單的事情:

var input = [{"key":"jim","values":{"count":2,"total":79}}, 
{"key":"carl","values":{"count":1,"total":120}}, 
{"key":"stacy","values":{"count":3,"total":90}}]; 

var output = input.map(function(item) { 
    return { 
     key: item.key, 
    count: item.values.count, 
    total: item.values.total 
    } 
}); 

console.log(output); 
+1

好的一個傢伙!但它不適用於動態對象(如鍵名不計數,總數) – KrishCdbry

+0

好的我明白了。由於我正在開發反應應用程序並調用一些Web應用程序,所以大部分時間我的鍵名都已定義好。但我現在明白爲什麼你的答案如此複雜:)很高興知道。 –

+0

是的,很酷的傢伙!愛你的解釋。偉大的繼續。我想現在你可以投票給我,並將其標記爲答案:)開玩笑 – KrishCdbry