我有以下数组(由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 - 不需要对结果对象进行排序。
答案 0 :(得分:1)
您需要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));
答案 1 :(得分:0)
是的,for循环应该可以解决这个问题
create temporary table tempt as
select distinct movie, link
from t;
truncate table t;
insert into t(movie, link)
select movie, link
from tempt;
&#13;
create unique index idx_t_movie_link on t(movie, link);
&#13;