1
我有興趣使用Clojurescript中的核心函數創建如下所示的函數。Clojurescript中的'find'函數匹配所有的鍵/值
var props = [
["eyes", "brown"],
["age", "20"]
];
var people = [
{eyes: "brown", age: "20", name: "Dick"},
{eyes: "green", age: "30", name: "Tom"},
{eyes: "blue", age: "20", name: "Sally"},
{eyes: "brown", age: "20", name: "Harry"}
];
find = function (items, keyvals) {
var results = items.slice(0);
keyvals.forEach(function (keyval) {
results = results.reduce(function (memo, item) {
if (item.hasOwnProperty(keyval[0]) &&
item[keyval[0]] === keyval[1]) {
memo.push(item);
}
return memo;
}, []);
});
return results;
};
document.body.innerHTML = JSON.stringify(find(people, props));
到目前爲止,我有:
(defn find-all
([items k v]
(filter #(= (k %) v) items))
([items k v & keyvals]
(into [k v] keyvals)))
功能的第二部分上面將調用(find-all items k v)
每個keyvals
,存儲所產生的匹配,然後進料入那些下一個呼叫。 items
將是一個地圖矢量,而不是一個對象數組。