【问题标题】:From Object to Array in JavaScript [duplicate]JavaScript中从对象到数组[重复]
【发布时间】:2017-08-08 09:06:20
【问题描述】:

我需要编写一个函数来接收一个对象并返回一个包含该对象属性值的数组。

例如:

var obj = {
    name: "Joao",
    age: 27,
    country: "USA"
};

函数应该返回一个像这样的数组:

var array = ["John", 27, "USA"]; 

我不能使用 Object.values()。

这就是我最后一次尝试的样子:

function returnValues(obj) {
    for (var key in obj) {
    return obj[key];
}

它不返回包含值的数组。谁能帮我?

【问题讨论】:

标签: javascript arrays function methods javascript-objects


【解决方案1】:

您可以使用Object.keys 并对其进行迭代以返回值:

function returnValues(obj) {
    return Object.keys(obj).map(function(key) {
       return obj[key];
    });
}

或者您可以使用现有解决方案创建一个临时数组:

function returnValues(obj) {
    var temp = [];
    for (var key in obj) {
       temp.push(obj[key]);
    }
    return temp;
}

借助 ES6 支持,您可以缩短为:

const returnValues = (o) => Object.keys(o).map(k => o[k]);

或者使用Object.entries:

Object.entries(obj).map(([,v]) => v)

或者正如@ibrahim mahrir 指出的那样,如果你有 ES2017 支持,你可以使用Object.values:

console.log(Object.values(obj));

【讨论】:

  • 谢谢@ibrahimmahrir。添加所有解决方案! :P
  • @ibrahimmahrir 我希望我能将我收到的对这个答案的支持捐赠给你:P - 更新
  • 我很高兴能提供帮助!
【解决方案2】:

您也可以使用Object.entries()。

var obj = {name: "Joao", age: 27, country: "USA"},
    elems = Object.entries(obj).map(v => v[1]);

    console.log(elems);

【讨论】:

    【解决方案3】:

    您可以尝试使用地图:

    var obj = {
        name: "Joao",
        age: 27,
        country: "USA"
    };
    
    var array = Object.keys(obj).map(item => obj[item]);
    
    console.log(array);

    【讨论】:

      【解决方案4】:

      将其添加到数组中,然后返回数组

      function returnValues(obj) {
          var arr = [];
          for (var key in obj)
             arr.push(obj[key]);
          return arr;
      }
      

      【讨论】:

        猜你喜欢
        • 2018-03-25
        • 1970-01-01
        • 2012-09-28
        • 1970-01-01
        • 1970-01-01
        • 2014-01-09
        • 1970-01-01
        • 2018-06-19
        • 2014-06-25
        相关资源
        最近更新 更多