gpt4 book ai didi

javascript - Angularjs 只过滤一级属性

转载 作者:行者123 更新时间:2023-11-30 17:13:20 26 4
gpt4 key购买 nike

我有如下所示的 javascript 对象:

{ name: 'Barney', color: 'blue', parent: {name: 'Henry'} }

当我在包含上述对象的数组上使用 $filter('filter')('Henry') 时,我不希望结果包含它。我只想过滤掉第一级匹配的内容,在本例中为“名称”和“颜色”属性。

这可能吗?

最佳答案

你会想要创建一个自定义过滤器,因为 Angular 提供的默认过滤器似乎可以进行深度比较。

这是我快速想出的一个示例,您可能想要更改过滤器以满足您的需要:

// Looks like a nice little tree :)
app.filter('shallowFilter', function () {
return function (items, value) {
if (!angular.isDefined(value) || value === '') {
return items;
}

return items.filter(function (item) {
for (var prop in item) {
if (item.hasOwnProperty(prop)) {
var propVal = item[prop],
propLower,
valLower;

// Skip values that are not a string..
if (typeof propVal !== 'string') {
continue;
}

propLower = propVal.toLowerCase();
valLower = value.toLowerCase();

if (propLower.indexOf(valLower) !== -1) {
return true;
}
}
}
});
};
});

这是一个 plunker演示其工作原理。

编辑:

这只会遍历对象的“低级”属性(浅搜索),这就是我假设您想要的。

关于javascript - Angularjs 只过滤一级属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26554260/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com