javascript - 如何根据 JavaScript 对象的属性过滤它

标签 javascript arrays

我有一个 JavaScript 对象

 var items = { ids : [
  {
    label: "red",
    complete: true
  },
  {
    label: "green",
    complete: false
  },
  {
    label: "blue",
    complete: true
  }
]

}

当我单击完整按钮或单击所有按钮时,它会显示所有条目,我需要根据完整属性进行过滤。

如何在同一个函数中执行此操作

我有这个函数,它获取列表 DOM 元素并相应地创建条目。我想知道如何编写这个函数,以便它可以过滤完整状态或打印重绘函数本身中的所有条目。

 var redraw = function(items) {
     list.innerHTML='';
     for (var id in items) {
       draw(model.todos[id], list);
     }
 };

  var draw = function(Obj, container) {
      var el = Template.cloneNode(true);
      el.setAttribute('data-id', Obj.id);
      container.appendChild(el);
       update(Obj);
});

}

最佳答案

添加一个名为 filterItems 的新函数,该函数接受 items 数组、keyvalue 参数并返回根据这些参数过滤数组。然后,只需使用正确的参数从 redraw 调用它即可。

function filterItems(items, key, value) {
  return items.ids.filter(function (el) {
    return el[key] === value;
  });
}

var redraw = function(items) {
  list.innerHTML='';
  items = filterItems(items, 'complete', true);
  for (var id in items) {
    draw(model.todos[id], list);
  }
};

DEMO

关于javascript - 如何根据 JavaScript 对象的属性过滤它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24997518/

相关文章:

javascript - 如何在此示例代码中正确使用 JSON.parse(字符串到数组)?

javascript - 优化react中组件的渲染负载

JavaScript:在外部脚本中初始化 Google map

javascript - jQuery .fadeIn() 工作但 .slideDown() 和 .animate() 不工作

c - 从文件数据构建字符串数组时内存覆盖?

java - 将对象数组传递给java中的方法

java - 将文件读入二维数组时出错

javascript - Angular Chart js 饼图不起作用

c# - 在 c# 中根据其子元素对 arraylist 进行排序

java - 在 Java 中使用列表来存储用户输入并执行任务