我遇到一个问题,即我正在使用的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')
会实现我想要的目标吗?
答案 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"]