2017-01-31 76 views
2

我有一個這樣的對象:推對象的鍵和其值,以陣列

{ 
"id": 23, 
"name": "Jacob", 
"link": { 
    "rel": "self", 
    "link": "www.abc.com" 
}, 
"company":{ 
     "data":{ 
      "id": 1, 
      "ref": 324 
     } 
} 

欲存儲與其值的每個鍵的陣列中的JavaScript或打字稿這樣 [[「ID」: 23],[ 「名字」: 「雅各布」],[ 「鏈接」:{......,......}]]等

我,這樣我可以這樣做爲每個添加一個ID,我最好的猜測是我會循環訪問數組,併爲每個數據添加一個ID/a標誌..我不知道該怎麼做......以及如何解決這個問題?感謝名單

+3

你想要的是無效的語法。相反,解釋你正在解決什麼問題。 – zerkms

+0

是的。那麼類似的事情:[[「id」,23],[「name」,「Jacob」],[「link」,{......,......}]] –

+0

hmm I看到...它有點複雜,解釋,讓我回到你以後 – Yasir

回答

2
var arr = []; 

for (var prop in obj) { 
     if (obj.hasOwnProperty(prop)) { 
     var innerObj = {}; 
     innerObj[prop] = obj[prop]; 
     arr.push(innerObj) 
     } 
    } 

    console.log(arr); 

這裏是演示https://plnkr.co/edit/9PxisCVrhxlurHJYyeIB?p=preview

+0

這就是接近的人,感謝名單但仍分離在陣列和值的鍵在不同的一個'陣列[2] - > 0:ID 1:23' – Yasir

+0

它只是顯示像,它實際上是[「ID」,23] –

+0

陣列在JS有索引。所以如果你想達到「ID」你只是console.log(ARR [0] [0])看到它 –

1

,你可以嘗試使用實驗Object.entries

let obj = { 
 
"id": 23, 
 
"name": "Jacob", 
 
"link": { 
 
    "rel": "self", 
 
    "link": "www.abc.com" 
 
}, 
 
"company":{ 
 
     "data":{ 
 
      "id": 1, 
 
      "ref": 324 
 
     } 
 
}}; 
 

 
console.log(Object.entries(obj).map(item => ({[item[0]]:item[1]})));

你可以使用填充工具不支持的瀏覽器:https://github.com/es-shims/Object.entries

+0

那不是什麼進出口尋找...它分隔值「ID」,23 – Yasir

+0

我接着說:Array.map'功能,我的代碼,請再次檢查,如果這是你想要的結果 – Andriy

0

可以使用Object.keys方法來獲取鍵的數組,然後使用Array#map方法返回一個包含每個屬性的單個對象的新數組。

這ES6一個班輪應該這樣做:

const splitObject = o => Object.keys(o).map(e => ({ [e]: o[e] })); 

或者在ES5:

function splitObject(o) { 
    return Object.keys(o).map(function(e) { 
     return Object.defineProperty({}, e, { 
      value: o[e], 
      enumerable: true 
     }); 
    }); 
} 
0
var res = []; 
_.transform({ 
    "id": 23, 
    "name": "Jacob", 
    "link": { 
    "rel": "self", 
    "link": "www.abc.com" 
    }, 
    "company": { 
    "data": { 
     "id": 1, 
     "ref": 324 
    } 
    } 
}, function(result, value, key) { 
    res.push(key +':'+value); 
}, {}); 

您可以使用下劃線

0

你可以使用迭代/遞歸方法與對象和它們的嵌套部分。它適用於任何深度。

function getKeyValue(object) { 
 
    return Object.keys(object).reduce(function (result, key) { 
 
     return result.concat(
 
      object[key] && typeof object[key] === 'object' ? 
 
      getKeyValue(object[key]) : 
 
      [[key, object[key]]] 
 
     ); 
 
    }, []); 
 
} 
 

 
var data = { id: 23, name: "Jacob", link: { rel: "self", link: "www.abc.com" }, company: { data: { id: 1, ref: 324 } } }; 
 

 
console.log(getKeyValue(data));
.as-console-wrapper { max-height: 100% !important; top: 0; }

1
p.forEach(function (country) { 
    country.forEach(function (entry) { 
    entry.push({"value" : 'Greece', "synonyms" : 'GR'}); 
    }); 
}); 
+1

你好,對代碼的解釋會幫助其他用戶。 – tima