javascript - 从嵌套的 JSON 数组中获取数据

标签 javascript jquery arrays json

我有一个这样的对象......

var oInfoModal = "{"modals":[{"myID":17,"warningIdx":[0]},{"myID":12,"warningIdx":[1,2]},{"myID":11,"warningIdx":[3]},{"myID":10,"warningIdx":[4]},{"myID":9,"warningIdx":[5,6,7]},{"myID":8,"warningIdx":[8]},{"myID":7,"warningIdx":[9,10]},{"myID":6,"warningIdx":[11,12]},{"myID":5,"warningIdx":[13,14]},{"myID":4,"warningIdx":[15,16]},{"myID":3,"warningIdx":[17]},{"myID":1,"warningIdx":[18,19]},{"myID":0,"warningIdx":[20,21]}]}";

我想根据传递给函数的 warnIdx 值过滤对象,但结果是空对象。我知道问题在于 oInfoModal.modals.warningIdx 本身就是一个数组。但我不确定如何返回过滤后的 oInfoModal.modals 对象。

function filterInfoModals(warnIdx) {
  return oInfoModal.modals.filter(function (item) {
    return item.warningIdx == warnIdx;
  });
}

我也试过

function filterInfoModals(warnIdx) {
    return oInfoModal.modals.filter(function (item) {
        return item.warningIdx.filter(function (idx,val) {
            return val.warningIdx == warnIdx;
        });
    });
}

这会返回原始的、未过滤的对象。

现在只是在兜圈子。任何指导将不胜感激!

最佳答案

您没有有效的对象。您将它包裹在 ""引号中,因此它是一个字符串。因此,您的过滤器将无法正常工作。您的对象中还有其他语法错误会阻止它正常工作。这是完整的修复:

var oInfoModal = {
  "modals": [
    { "myID": 17, "warningIdx": [0] },
    { "myID": 12, "warningIdx": [1, 2] },
    { "myID": 11, "warningIdx": [3] },
    { "myID": 10, "warningIdx": [4] },
    { "myID": 9, "warningIdx": [5, 6, 7] },
    { "myID": 8, "warningIdx": [8] },
    { "myID": 7, "warningIdx": [9, 10] },
    { "myID": 6, "warningIdx": [11, 12] },
    { "myID": 5, "warningIdx": [13, 14] },
    { "myID": 4, "warningIdx": [15, 16] },
    { "myID": 3, "warningIdx": [17] },
    { "myID": 1, "warningIdx": [18, 19] },
    { "myID": 0, "warningIdx": [20, 21] }
  ]
};

function filterInfoModals(warnIdx) {
  return oInfoModal.modals.filter(function (item) {
    return item.warningIdx.indexOf(warnIdx) > -1;
  });
}
console.log(filterInfoModals(1,2));

关于javascript - 从嵌套的 JSON 数组中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47819820/

相关文章:

java - 如何在java中保存对象数组中的值?

javascript - 当ajax代码工作时,使用javascript禁用html中的链接

javascript - onLoad 弹出窗口(仅在第一次访问时加载)

javascript - 没有 jQuery 的淡入淡出

JQuery - 按 2 个不同的来源搜索

c - 使用一维数组对 C 中的矩阵进行转置

javascript - 如何使用 Angular.js 当所有输入字段都具有某些值时显示按钮

Javascript:动态更改 CSS 文件 + Cookie

javascript - 在复选框状态切换元素类

java - 用于创建按钮数组的循环无法在 JPanel 中正确显示