Javascript - 将JSON对象属性值从Array转换为String

时间:2017-01-31 16:42:27

标签: javascript json

我遇到一个问题,即我正在使用的API调用是使用一个属性发送对象,该属性包含单个数组值(keys属性,如下所示)。不幸的是我不能使用这种格式,因为我必须遵守嵌套数组,以便在单独的应用程序中使用输出值,如[[value1, value2, value3, value4],[value1, value2, value3, value4]]。我打算提出一个单独的问题来解决嵌套数组部分,除非有人认为这是一个简单的修复(我相信我应该使用.map来转换对象)。

以下是我的对象的格式(来自console.log(searchQueries)):

[ { keys: [ 'hammer' ],
    clicks: 1369,
    impressions: 3151,
    ctr: 0.4344652491272612,
    position: 1.004443033957474 },
  { keys: [ 'woodmaking' ],
    clicks: 207,
    impressions: 6324,
    ctr: 0.03273244781783681,
    position: 4.35831752055661 },
  { keys: [ 'house trends' ],
    clicks: 1,
    impressions: 3,
    ctr: 0.3333333333333333,
    position: 4.666666666666666 },
  { keys: [ 'housing' ],
    clicks: 1,
    impressions: 36,
    ctr: 0.027777777777777776,
    position: 6.472222222222222 } ]
byProperty

以上响应从以下for-in循环传递,此API响应数组的结果最初嵌套在对象中:

for (var prop in res){
              searchQueries = res[prop];

              console.log(searchQueries);
}

JSON.stringify方法或.toString('keys')会实现我想要的目标吗?

3 个答案:

答案 0 :(得分:2)

如果要将keys从数组转换为字符串,只需迭代数组并进行更改:

searchQueries.forEach(function (obj) { obj.keys = obj.keys[0] })

答案 1 :(得分:1)

 answer=Object.values(searchQueries).map(el=>{el.keys=el.keys[0];return Object.values(el)});
console.log(searchQueries);

https://jsbin.com/biyazunafu/1/edit?console

在主数组上循环,将Objects(el)键数组转换为字符串,而不是将整个对象转换为其值Array。但是,Object.values是实验性的,因此可能不会在用户端使用它,而是使用此代码转换为ES5:

answer=[];
for(key in searchQueries){
  answer.push(searchQueries[key]);
 }
answer=answer.map(function(el){
  el.keys=el.keys[0];
  var newel=[];
  for(key in el){
    newel.push(el[key]);
  }
 return newel;
});

答案 2 :(得分:0)

  • 第一次获取键值

    var keys = searchQueries.map(function(e){return e.keys;});
    

这将输出:

[["hammer"], ["woodmaking"], ["house trends"], ["housing"]]
  • 第二名:Concat结果数组

    var values = keys.join(',').split(',');
    

结果:

 ["hammer", "woodmaking", "house trends", "housing"]