从JavaScript对象创建数组

3

我有一些数据,看起来像这样:

{
  "obj":
  [
    {
      "name": "name1",
      "age": "24"
    },
    {
      "name": "name2",
      "age": "17"
    }
  ]
}

我需要做的是从中创建两个数组。
例如:
namelist[];
agelist[];

所以结果将会是:
namelist: ['name1', 'name2'];

agelist: [24, 17];

我的问题是,我该如何做到这一点?
5个回答

2
var namelist = [];
var agelist = [];
for(var i in obj.obj){
    namelist.push(obj.obj[i].name);
    agelist.push(obj.obj[i].age);
}

console.log(namelist, agelist);

2
这是您想要的吗?
var zz={
    "obj": [
        {
            "name": "name1",
            "age": "24"
        },
        {
            "name": "name2",
            "age": "17"
        }
    ]
}

namelist=[];
agelist=[];
zz.obj.forEach(function(rec){
  namelist.push(rec.name);
  agelist.push(rec.age);
})

console.log(namelist,agelist)

年龄列表数组可以是整数而不是字符串吗? - user7038798
@MarkcceEros,你可以使用push(parseInt(rec,age)),这将会是一个数字。 - O_Z

0

利用jQuery的map函数,或者使用JavaScript的for循环遍历对象并将其推入数组中,然后使用push()函数。请参考JavaScript中遍历数组

jQuery

var data = {
    "obj": [
        {
            "name": "name1",
            "age": "24"
        },
        {
            "name": "name2",
            "age": "17"
        }
    ]
}

var name = $.map(data.obj, function(value, index) {
    return value.name;
});
var age = $.map(data.obj, function(value, index) {
    return value.age;
});

console.log(name);
console.log(age);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

JavaScript

var data = {
        "obj": [
            {
                "name": "name1",
                "age": "24"
            },
            {
                "name": "name2",
                "age": "17"
            }
        ]
    }
    var names = [], ages=[];
    data.obj.forEach(function(value, index) {

        names.push(value.name);
        ages.push(value.age);
    });
console.log(names,ages);


1
你在哪里看到了jQuery的引用? - Andreas
1
@Andreas 我明白没有jquery标签,这也是我在我的答案中添加如何处理javascript解决方案的原因。但既然你强调了它,我编辑了我的答案。如果OP希望使用jquery,那就是他的选择,我只是提供了一个选项。 - Shubham Khatri

0
你可以使用这段ES6代码,并使用一元加号将年龄转换为数字。假设你的对象存储在变量data中:
var namelist = data.obj.map( o => o.name );
var agelist = data.obj.map( o => +o.age );

var data = {
    "obj": [
        {
            "name": "name1",
            "age": "24"
        },
        {
            "name": "name2",
            "age": "17"
        }
    ]
};

var namelist = data.obj.map( o => o.name );
var agelist = data.obj.map( o => +o.age );

console.log(namelist);
console.log(agelist);


0
var arr = $.map(myObj, function(value, index) {
return [value];
});


console.log(arr);

如果你不使用jQuery的话:
var arr = Object.keys(myObj).map(function (key) 
 { return obj[key]; 
});`

  1. 没有jQuery标签;
  2. myObj是什么?
  3. 第一个将创建一个数组的数组。
- Andreas
myObj是他希望转换的对象的名称。 - felix91
那么你的解决方案根本没有意义。他要么必须为“obj”中的每个条目调用片段,这只会返回一个值数组;或者如果他在包含“obj”的对象上调用它,那么将得到一个包含“obj”的值(对象数组)的数组。 - Andreas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接