JS:将对象中的特定值转换为数组?

时间:2016-07-14 22:08:41

标签: javascript

我有一个对象:

var obj = 
[
 {
   "value": "aep",
   "label": "AEP"
 },
 {
   "value": "cap",
   "label": "CAP"
 },
 {
   "value": "casl",
   "label": "CASL"
 } ] 

我想将标签的值仅转换为数组,以便最终结果为:

["AEP", "CAP", "CASL"]

如何只获取在数组中转换的标签值?

4 个答案:

答案 0 :(得分:1)

首先:obj不是一个对象,它是一个数组,因为父括号是[]而不是{}。但是,我会保持名称相同。这可能会引起一些混乱,例如

var object = {};
var array = [];
var arrayOfObjects = [{},{},{}];
var objectOfArrays = {array1: [],array2: [],array3: []};

要循环数组,可以使用for循环:

// new array
var newArray = [];
// iterates over each index in the array
for(var i=0; i<obj.length; i++) {
    // Access the specific index, then access its `label` property
    // Push into `newArray`
    newArray.push(obj[i].label);
}

console.log(newArray);

Codepen:http://codepen.io/theblindprophet/pen/RRxVba

答案 1 :(得分:0)

这是一个功能性解决方案,而不是最直接的,您可能需要参考@ theblindprophet的答案来解决此问题的必要方法。

以功能性方式完成非常简单的任务:

var labels = obj.map(function(inner) { return inner.label });

如何处理这样的问题:您需要考虑如何将您拥有的数据转换为您想要的数据。在这种情况下,您有一个对象数组,并且您希望将此对象数组转换为放置在该对象内的字符串数组。

上面的代码遍历数组并返回数组当前元素所需的值,在课程中构建一个新数组(map

答案 2 :(得分:0)

使用for循环

 var out = [];
 for (var i = 0, len = obj.length; i < len; i++) {
     out.push(obj[i].label);
 }
 console.log(out);

答案 3 :(得分:0)

简单。你可以使用javascript数组的map函数

var obj = 
[
 {
   "value": "aep",
   "label": "AEP"
 },
 {
   "value": "cap",
   "label": "CAP"
 },
 {
   "value": "casl",
   "label": "CASL"
 } ] 

var arr = obj.map(function(data){return data.value});