javascript 如何使对象内联

标签 javascript matrix

我有一些具有不同嵌套的对象。示例:
对象1

{
    data: {somePage1.php:
                         {0: 
                             {function:'getPrice',
                             item:'0568000085',
                             line: 6},
                          1:
                             {function:'getCurrency',
                             item:'066000089'
                             line: 9}
                          },
           somePage2.php:...
      }
}

对象2

data: {EUR:{currency:45.0417}USD:{currency:33.0346}}

等等。我需要的是函数,它将使任何对象内联

希望的结果是:

对象1

{row1:{key1:somePage1.php, key2:0, function:'getPrice', item:'0568000085', line:6}
 row2:{key1:somePage1.php, key2:1, function:'getCurrency', item:'066000089', line:9}
 row3:{key1:somePage2.php, key2:0, function: ...                                   }
 row4:...
}

对象2

{
 row1:{key1:EUR, currency:45.0417}
 row2:{key1:USD, currency:33.0346}
}

很明显我需要递归,但我无法弄清楚整个函数,如下所示:

    this.row = 0;
this.inline = function(d){
var that = this;
var data = d||that.data;//data have been append to this object onload
    $.each(data, function(attr, value){
        $.each(data[attr], function(att, val){
            if(typeof(val) === 'object' || typeof(val) === 'array'){
                that.inline(data[attr][att]);
            }else{
                $.each(data, function(){
                    that.row++;
                });
                console.log(value);
            }
        }); 
    });
console.log('======> '+that.row);
},

最佳答案

function convert(d) {
  var r = {}, j = 0;
  for (var i in d) {
    r['row'+(j++)] = flatten({key1:i}, d[i], 2);
  }
  return r;
}
function flatten(r, d, l) {
  for (var i in d) {
    var c = d[i];
    if (c && typeof c == 'object') {
      r['key'+l] = i;
      flatten(r, c, l+1);
    } else {
      r[i] = c;
    }
  }
  return r;
}

这使用递归并假设 json 是任意嵌套的,并将 key1、key2 等分配给那些值为非 null 对象的键。

编辑:修复为使第一个键使用 rowX (抱歉所有单字母变量名称)

关于javascript 如何使对象内联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20490832/

相关文章:

javascript - React Native - 获取选择了哪个可触摸突出显示

matrix - 伴随矩阵复杂度

r - lm 和 biglm 的 QR 分解不同?

python - 在 numpy/scipy 中从 3D 矩阵堆栈构造 3D block 对角矩阵堆栈的有效方法

python - 如何使用 python 从图像堆栈中读取时间序列?

javascript - 使用 JS 有向图矩阵可视化

Javascript 检查 float

javascript - 如何评估 Javascript 中固有的对象方法并用 Big-O 表达它?

javascript:在调用之间保存变量的值?

javascript - 如何清空另一个文本框上的文本框