【问题标题】:Convert Array of Objects into Array of Array of strings将对象数组转换为字符串数组
【发布时间】:2018-05-18 19:45:12
【问题描述】:

在我的 Angular 应用程序中,我从服务中获取值作为对象数组,如下所示。

temp=  [
    {
        "a": "AAA",
        "b": "bbbb",
        "c": "CCCC",
        "d": "ddddd",
    },
    {
        "a": "lmn",
        "b": "opq",
        "c": "rst",
        "d": "uvw",
    }
 ]

我需要将此 temp 格式化为字符串数组:

newTemp = 
[
 ['AAA', 'bbbb', 'CCCC', 'ddddd'],
 ['lmn', 'opq', 'rst', 'uvw'],
];

我们是否需要对每个对象执行 forloop 或者是否有任何直接的方法。

【问题讨论】:

标签: arrays string angular object


【解决方案1】:

您可以使用Array.map

let newArray = arr.map(a => Object.values(a))

如果你不能使用Object.values

let newArray = arr.map(a => Object.keys(a).map(k => a[k]))

输出

(2) [Array(4), Array(4)]
    0:(4) ["AAA", "bbbb", "CCCC", "ddddd"]
    1:(4) ["lmn", "opq", "rst", "uvw"]

【讨论】:

  • 我尝试在没有 Object.values 的情况下使用,它显示“无法将未定义或 null 转换为对象”
  • 一个简单的小改动,有没有一种方法可以将附加元素添加到新生成的数组中。例如 ['false', 1, "AAA", "bbbb", "CCCC", "ddddd"] 基本上是 'false' 和一个显示行号的数字
【解决方案2】:

尝试以下方法:

temp=  [
    {
        "a": "AAA",
        "b": "bbbb",
        "c": "CCCC",
        "d": "ddddd",
    },
    {
        "a": "lmn",
        "b": "opq",
        "c": "rst",
        "d": "uvw",
    }
 ]
 
 var newTemp = [];
temp.forEach(function(obj){
    var arr = [];
   Object.keys(obj).forEach(function(key){
      arr.push(obj[key]);
   })
   newTemp.push(arr);
});
console.log(newTemp);

【讨论】:

    猜你喜欢
    • 2021-05-09
    • 2019-03-14
    • 2018-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多