我有以下数组(由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 loop2作为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/

10-12 12:28