提取特定的JSON对象并推送到新对象

时间:2016-03-09 16:03:10

标签: javascript jquery json

嘿伙计们,我有一个看起来有点像这样的obj。

[
    {
        "app": 1,
        "scalable": true,
        "zoomable": true,
        "cropBoxResizable": true
    },
    {
        "app": 2,
        "scalable": false,
        "zoomable": true,
        "cropBoxResizable": false
    }
]

我正在尝试的是基本上提取哪些特定的应用相关对象数据并保存到第二个对象。因此,例如,如果app = 1,则newObj将是这样的

var newObj = {
        "app": 1,
        "scalable": true,
        "zoomable": true,
        "cropBoxResizable": true
    }

有没有办法让这种json格式变得更好?我也对此持开放态度。我只想弄清楚最优化的方法来解决这个问题。

谢谢。

3 个答案:

答案 0 :(得分:2)

您需要遍历数组并检查app是否相等

var arr = [ { "app": 1, "scalable": true, "zoomable": true, "cropBoxResizable": true }, { "app": 2, "scalable": false, "zoomable": true, "cropBoxResizable": false } ]

function extract(a, app) {
    var length = a.length;
    for(var i = 0; i < length; i++){
        if (a[i].app === app) {
            return a[i];
        }
    }
}

var newObj = extract(arr, 2)
console.log(newObj);

结果:

{ app: 2,
  scalable: false,
  zoomable: true,
  cropBoxResizable: false }

答案 1 :(得分:0)

试试这段代码,这是最简单的方法

var source = [
    {
        "app": 1,
        "scalable": true,
        "zoomable": true,
        "cropBoxResizable": true
    },
    {
        "app": 2,
        "scalable": false,
        "zoomable": true,
        "cropBoxResizable": false
    }
];

for (var i = 0; i < source.length; i++) {
    if (source[i].app == "1") {
         console.log(source[i]);
    };
};

答案 2 :(得分:0)

如果我理解你应该更好地将对象用作容器而不是数组。

const src = { "1": // this is app name
  {
    "scalable": true,
    "zoomable": true,
    "cropBoxResizable": true
  },
  "2":
  {
    "scalable": false,
    "zoomable": true,
    "cropBoxResizable": false
  }      
};

所以那就是 const appData = src ['1'];