0

私は次のオブジェクト構造を持っています

 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"]]
4

1 に答える 1

2

それらがすべて少なくとも 1 文字を含む文字列である場合は、次のようにすることができます。

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]]);
}

index から開始し1、配列内の現在および前のアイテムをプッシュします。値が true である限り続行されるため、空の文字列があれば停止します。

含める必要がある誤った値が存在する可能性がある場合は、最初にプロパティをカウントする必要があります。

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]]);
}
于 2013-10-21T12:24:17.857 に答える