【发布时间】:2014-06-14 12:22:21
【问题描述】:
我需要创建一个函数,该函数接受Objects 数组并返回与一组特定条件匹配的对象。到目前为止我所拥有的相当简单:(伪代码)
// input: conditions: { prop1: "x", prop2: "z"}
// source: [{ prop1: "x", prop2: "y"}, { prop1: "x", prop2: "z"}];
// output: array of objects with the same properties & values
// ex:
// getObjects({ prop1: "x", prop2: "z"}, [{ prop1: "x", prop2: "y"}, { prop1: "x", prop2: "z"}]);
// returns: [{ prop1: "x", prop2: "z"}]
//....
var results = [];
for (var prop in obj) {
var match = false;
for (var cond in conditions) {
if (cond === prop && conditions[cond] == obj[prop]) {
match = true;
}
}
if (match) {
results.push(row);
}
}
return results;
其中conditions 是一个对象,表示匹配对象必须具备的一个或多个属性。
问题是这会以某种方式返回重复的对象,这显然是不可能发生的。我知道有一种标准方法可以实现这一点(可能是编程 101 之类的东西),但我的 Google-foo 让我失望了。
注意:由于上下文,我不能在这里使用Array.prototype.filter。我正在遍历表中的一组或多行,只想返回符合特定条件的那些。
基本上这个想法是“返回与输入对象相似的对象。
【问题讨论】:
-
您确定生成的重复对象是由该脚本引起的,而不是由从源表中生成行的查询引起的吗?
-
@DevlshOne:不涉及查询。有问题的表是在标记中手动构建的
<table>。虽然我实际上在做的是一个查询。 -
您能否提供有关标准和表格行示例的更多详细信息?
-
@DevlshOne:检查我的更新。
标签: javascript arrays algorithm object filtering