我有以下数组(由Redis HSCAN返回):
[ 'foo',
'1437234647',
'bar',
'1437234633' ]
这是按键,值,键,值等顺序排列的。我希望将其转换为JSON对象,如下所示:
{
"foo": "1437234647",
"bar": "1437234633"
}
如何才能做到这一点?我在遍历数组时猜测使用奇/偶?
更新-这是我想出的,但是正在寻找更好的解决方案:
function keyValueArrayToJson(inArr){
function isNumber(n) {
return n == parseFloat(n);
}
function isEven(n) {
return isNumber(n) && (n % 2 == 0);
}
var out = {};
for (var i in inArr) {
if(isEven(i)){
out[inArr[i]] = '';
} else {
var p = i -1;
out[inArr[p]] = inArr[i];
}
}
return out;
}
更新2-感谢@squint-不需要对结果对象进行排序。
最佳答案
您只需要一个for loop
和2
作为step
即可:
var array = ['foo', '1437234647', 'bar', '1437234633'];
var object = {};
for (i = 0; i < array.length - 1; i += 2) {
object[array[i]] = array[i + 1];
}
alert(JSON.stringify(object));
关于javascript - Javascript-以键/值顺序到JSON的数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31493248/