是否可以嵌套ko.utils.arrayFilter?

时间:2016-02-24 15:54:51

标签: knockout.js

以下是我的json。

  [
  {
    heading: "name1",
    viewable: true,
    items: [
      {
        name: "name2",
        status: true
      },
      {
        name: "name1-2",
        status: false
      }
    ]
  },
  {
    heading: "name2",
    viewable: false,
    items: [

    ]
  },
  {
    heading: "name3",
    viewable: true,
    items: [
      {
        name: "name3-1",
        status: true
      },

    ]
  },
  {
    heading: "name4",
    viewable: true,
    items: [

    ]
  }
]

我正在将此JSON转换为可观察数组,我想按嵌套数组项()中的名称过滤此数组。我尝试使用嵌套的ko.utils.arrayFilter,但它没有给我任何输出。它总是给我一个空数组。

通过嵌套数组元素过滤数组的最佳方法是什么?

抱歉我的英语不好。

1 个答案:

答案 0 :(得分:1)

您需要在过滤器中调用一个测试。类似的东西:

function nameInList(name, list) {
  var result = false;

  ko.utils.arrayForEach(list, function(item) {
    if (item.name === name) {
      result = true;
    }
  });

  return result;
}

然后你的过滤器看起来像

ko.utils.arrayFilter(myList, function (item) {
  return nameInList('name2', item.items);
});