我有以下对象结构
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/