-2

この質問から続けます: javascript literal から最初のオブジェクトを取得する

名前:値のペアのグループから値のみを取得することは可能でしょうか? それでは、オブジェクトのリストがあり、各オブジェクトが任意の数の値を持っているとしましょう:

var items = [
    {name:"Foo", age:16, gender:"m"},
    {name:"Bar", age:17, gender:"f"},
    {name:"foo", age:16, gender:"m"},
    {name:"bar", age:18, gender:"m"},
    {name:"foobar", age:18, gender:"f"},
    {name:"barfoo", age:20, gender:"f"}
];

次のようなリストを返すにはどうすればよいですか:

var items = [
    ["Foo", 16, "m"],
    ["Bar", 17, "f"],
    ["foo", 16, "m"],
    ["bar", 18, "m"],
    ["foobar", 18, "f"],
    ["barfoo", 20, "f"]
];

私はこれを試しましたが、それを行うより良い方法があるかどうか疑問に思っていました.

Array.prototype.getValues = function () {
    if(typeof(this[0]) != typeof({}))
        throw "Array values are expected to be == typeof({})";
    var items = [];
    for (var i = 0; i < this.length; i++) {
        var r = [];
        for (var l in this[i]) {
            r.push(this[i][l]);
        }
        items.push(r);
    }
    return items; 
};
4

1 に答える 1

4
var newitems=[];
//loop through each item in the original
for(var i =0; i<items.length; i++)
{
  newitems[i] = [];
  //loop over the properties in each element and push it to an array
  for(var prop in items[i]){
    newitems.push(items[i][prop]);
  }
}

または代わりに:

var newitems = items.map(function(elem){
  var item = [];
  for(var prop in elem){
    item.push(elem[prop]);
  }
  return item;
})
于 2013-03-11T00:56:50.393 に答える