javascript - 将对象转换为顺序数组格式 - javascript?

标签 javascript

我有以下对象结构

 var obj = {"0":"direct","1":"indirect","2":"dir","3":"indir"};

预期输出为:

result = [["direct","indirect"],["indirect","dir"],["dir","indir"]];

我尝试过的:

    var result = [];
    var array = [];
    for(var key in obj){
          if(array.length <2) {
              array.push(obj[key]);
          }else{
              array =[];
              array.push(obj[key-1]);
           }

       if(array.length == 2){
            result.push(array);
       }
     }
   console.log(result);

我得到的输出如下:

result = [["direct", "indirect"], ["indirect", "indir"]]

最佳答案

如果它们都是至少包含一个字符的字符串,那么您可以这样做:

var obj = {"0":"direct","1":"indirect","2":"dir","3":"indir"};
var result = [];

for (var i = 1; obj[i]; i++) {
    result.push([obj[i-1], obj[i]]);
}

它从索引 1 开始,并将当前和上一个项目推送到数组中。只要值是真值,它就会继续,所以如果有空字符串,它就会停止。

如果可能需要包含错误值,那么您应该首先对属性进行计数。

var obj = {"0":"direct","1":"indirect","2":"dir","3":"indir"};
var result = [];

var len = Object.keys(obj).length;

for (var i = 1; i < len; i++) {
    result.push([obj[i-1], obj[i]]);
}

关于javascript - 将对象转换为顺序数组格式 - javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19494232/

相关文章:

javascript - ExtJS:存储加载,记录在表单中但不在字段中

javascript - PHP:如果先前已选择该值并将其存储在数据库中,如何从复选框组中删除/禁用选择

javascript - 内容更改时 Magnific Popup iframe 自动调整大小(跨域)

javascript - 使用 Jquery 检查 MVC 模型属性是否为 null

javascript - 如何链接javascript和html

javascript - React Native,创建多个复选框

javascript - 基于 javascript 函数和变量的 windows.location

javascript - 分离源自 htc 文件的事件

javascript - 二进制到十进制转换在 JavaScript 中显示大数的错误结果

javascript - 更快地显示 HTML title 属性