我想這樣做幾乎這個用戶希望做同樣的事情:Underscore.js: create a map out of list of objects using a key found in the object在地圖上添加一個對象(不使用下劃線)
只有...
- 我不想使用下劃線庫或jQuery。只是普通的老JS。
- 我不希望我的對象鍵是一個字符串
所以,如果我有一個像這樣的對象 -
var some_object_array = [{id: 1, val: 55}, {id: 2, val: 1}, {id: 3, val: 45}];
我想這個轉換成 -
var some_map = {1: {id: 1, val: 55}, 2: {id: 2, val: 1}, 3: {id: 3, val: 45}};
另外,如果這是一個愚蠢的問題,我很抱歉。我是JS新手,在過去的兩個小時裏我一直在想這個問題,並一直得到錯誤的結果。我設法返回一個對象,看起來像這樣:
{ '1': [ { id: 1, val: 55 } ],
'2': [ { id: 2, val: 1 } ],
'3': [ { id: 3, val: 45 } ] }
我的代碼:
var some_object_array = [ {id: 1, val: 55},
{id: 2, val: 1},
{id: 3, val: 45}
];
function groupBy(array, callback) {
return array.reduce(function (result, item) {
var key = callback(item);
result[key] = item[key] || [];
result[key].push(item);
return result;
}, {});
}
console.log(groupBy(some_object_array, function(i) { return i.id; }));
不太正確。我的內部對象在數組中,我的密鑰被轉換爲一個字符串。不奇怪,但我只是不知道如何修改我的代碼。
哦,我想結果[關鍵] =項[關鍵],但讓這麼多的感覺。但是,我的對象鍵(1,2,3)仍然顯示爲一個字符串。任何想法如何解決這個問題。這讓我感到困惑,因爲我認爲對象鍵總是字符串......所以......我如何「解開」一個鍵? – DeeK
我不確定你的意思。關鍵在於這種形式。如果你看JSON,一個關鍵總是要雙引號。如果您使用整數查找,不要擔心它仍然會工作..我會更新我的答案來顯示此。 – Keith