angularjs-将对象值从数组转换为字符串

angularjs - Convert object values from array to string

本文关键字:转换 字符串 数组 对象 angularjs-      更新时间:2023-09-26

我在js中遇到了一些对象、json等问题。如果有人能帮我做点什么,那就太棒了!:)

我有一个对象,我不能改变,像这样:

{
  "page": [
    "POST",
    "DELETE"
  ],
  "news": [
    "PUT"
  ]
}

我想转换成这样:

{
  "page": "POST, DELETE",
  "news": "PUT"
}

所以我希望对象值(数组)是字符串,我也尝试过从互联网上获得的toString()、string(),JSON.stringify和其他方法(也许我做得不对),但都不适用于我,我对处理这些类型的数据有点陌生,所以如果有人能帮我,TKS!!:D

编辑:

在这种情况下,我得到了这样的结构:

{
  "page": {
    "POST": [
      "POST"
    ],
    "PUT": 122
  },
  "news": {
    "PUT": [
      "PUT"
    ]
  }
}

我如何转换为类似:

{
  "page": "POST, PUT:122",
  "news": "PUT"
}

如果您想修改初始对象-使用Object.keysArray.forEach函数就足够了:

var obj = {
  "page": [
    "POST",
    "DELETE"
  ],
  "news": [
    "PUT"
  ]
};
Object.keys(obj).forEach(function(k) {
  obj[k] = obj[k].join(",");
});
console.log(JSON.stringify(obj, 0, 4));

另一个复杂案例的附加解决方案

var obj = {
  "page": {
    "POST": [
      "POST"
    ],
    "PUT": 122
  },
  "news": {
    "PUT": [
      "PUT"
    ]
  }
};
Object.keys(obj).forEach(function (k) {
  var innerKeys = Object.keys(obj[k]), items = [];
  innerKeys.forEach(function(key) {
    items.push((Array.isArray(obj[k][key]))? key : key + ":" + obj[k][key]);
  });
  obj[k] = items.join(",");
});
console.log(JSON.stringify(obj, 0, 4));

假设您的对象总是将数组作为属性值,您可以使用下面的之类的javascript来实现这一点

 var obj = {
     "page": [
         "POST",
         "DELETE"
     ],
     "news": [
         "PUT"
     ]
 };

 for (var o in obj) {
     if (obj.hasOwnProperty(o)) {
         obj[o] = obj[o].join(", ");
     }
 }
 console.log(obj);

好的,这样您就可以使用var str = array.join(stringThatIsSupposedToBeInbetweenTheValues);将数组的所有值添加到字符串中(连接它们)。所以在你的情况下,这将是array.join(', ');。请注意,这个字符串只放在单个值之间,而不是放在它们周围(在结果的开头或结尾)。点击此处了解更多信息。

我希望这能有所帮助!

有很多方法可以做到这一点。只需要在对象上循环并将数组设置为字符串。

var obj = {
  "page": [
    "POST",
    "DELETE"
  ],
  "news": [
    "PUT"
  ]
};
Object.keys(obj).reduce( function (o, key) {  
    o[key] = o[key].join(", ");
    return o;
}, obj);
console.log(obj);

使用forEach可能是有意义的,但减少工作量。

您可以这样做;

var o = {
  "page": [
    "POST",
    "DELETE"
  ],
  "news": [
    "PUT"
  ]
},
    p = Object.keys(o).reduce((p,k) => (p[k] = o[k]+"",p),{});
console.log(p);