2017-01-24 30 views
-2

我有這個數據。正如你可以看到有4個代碼,每個代碼有不同的值。Javascript獲得不同的值到一個數組

下面是數據:

{ 
    "code": { 
     "1": 20, 
     "2": 1, 
     "3": 2, 
     "10": 1 
    } 
} 

var totals = [] 

我需要做的就是把這些入總數排列,因此最後的結果是這樣的:

[20,1,2, 1]

我該怎麼做?

+2

你也可以遍歷你的對象 – AshBringer

回答

-1

喜歡this.push使用for in環obj.code的每元素。

var obj = { 
 
     "code": { 
 
      "1": 20, 
 
      "2": 1, 
 
      "3": 2, 
 
      "10": 1 
 
     } 
 
    }; 
 
    var code = obj.code; 
 
    var totals = []; 
 
    for(x in code){ 
 
    totals.push(code[x]); 
 
    } 
 
console.log(totals);

+0

可以任何人都解釋爲什麼downvoted?這是壞習慣downvote工作的答案。 –

2

由於ES2017,您可以使用Object.values

var obj = { 
    "code": { 
     "1": 20, 
     "2": 1, 
     "3": 2, 
     "10": 1 
    } 
}; 

Object.values(obj.code); 

如果您使用的是舊版本,你可以使用一個for環路在安東尼的答覆中提到,或者使用lodash或undesrcore。

-1

你可以通過鑰匙環和值添加到一個數組:

var total = []; 
for(var key in a.code) { 
    total.push(a.code[key]); 
} 
+0

我建議增加'如果(a.code.hasOwnProperty(鍵)'推前值,以避免增加不必要的值。 – GilZ

0

使用Object.keys() OR Object.values()

var obj = { 
 
    "code": { 
 
    "1": 20, 
 
    "2": 1, 
 
    "3": 2, 
 
    "10": 1 
 
    } 
 
}; 
 

 
var totals = []; 
 

 
Object.keys(obj.code).forEach(function(key){ 
 
    totals.push(obj.code[key]); 
 
}); 
 

 
console.log(JSON.stringify(totals)); 
 

 
console.log(JSON.stringify(Object.values(obj.code)));

1

使用Array#mapObject.keys方法。

var data = { 
 
    "code": { 
 
    "1": 20, 
 
    "2": 1, 
 
    "3": 2, 
 
    "10": 1 
 
    } 
 
}; 
 

 
var totals = Object.keys(data.code).map(function(k) { 
 
    return data.code[k]; 
 
}) 
 

 
console.log(totals);

0

爲了保持穩定的結果,你應該事先鍵排序。

var data = { code: { 1: 20, 2: 1, 3: 2, 10: 1 } }, 
 
    result = Object.keys(data.code).sort(function (a, b) { 
 
     return a - b; 
 
    }).map(function (k) { 
 
     return data.code[k]; 
 
    }); 
 

 
console.log(result);

0
var obj = { 
    "code": { 
    "1": 20, 
    "2": 1, 
    "3": 2, 
    "10": 1 
    } 
}; 
var arr = Object.keys(obj.code).map(function (k) { return obj.code[k]; }); 
相關問題