Javascript lodash能否测试数组以检查数组元素是否具有具有特定值的字段?
我有一个变量Javascript lodash能否测试数组以检查数组元素是否具有具有特定值的字段?,javascript,lodash,Javascript,Lodash,我有一个变量selectedSubTopicId,我有一个subTopic对象数组:objectiveDetail.subTopics[]。每个子主题对象都有一个字段子主题ID 我想用它来启用或禁用和添加主题按钮。如果数组的任何subTopic对象元素的subTopicId与selectedSubTopicId相等,我是否可以在ng disabled中使用lodash来测试此数组并报告true 这是objectiveDetail中的数据示例。在本例中,子主题数组中只有一个元素 {"objecti
selectedSubTopicId
,我有一个subTopic对象数组:objectiveDetail.subTopics[]
。每个子主题
对象都有一个字段子主题ID
我想用它来启用或禁用和添加主题按钮。如果数组的任何subTopic
对象元素的subTopicId
与selectedSubTopicId
相等,我是否可以在ng disabled中使用lodash来测试此数组并报告true
这是objectiveDetail中的数据示例。在本例中,子主题数组中只有一个元素
{"objectiveDetailId":285,
"objectiveId":29,
"number":1,
"text":"x",
"subTopics":[{"subTopicId":1,
"number":1}]
}
下面是我的角度控制器中由Fourtheye建议的代码:
$scope.checkDuplicateSubTopicId = function (objectiveDetail, sSubTopic) {
if (_.some(objectiveDetail.subTopics, function(currentTopic) {
return _.contains(currentTopic, selectedSubTopicId);
})) {
return true;
} else {
return false;
}
}
未显示带有单击功能的我的按钮如下所示:
<button data-ng-disabled="checkDuplicateSubTopicId(objectiveDetail, subTopicId)">
Add Topic
</button>
添加主题
问题是它不能正常工作,并且按钮没有显示为禁用。您可以使用如下方法
var _ = require("lodash");
var objectiveDetail = {"objectiveDetailId":285,
"objectiveId":29,
"number":1,
"text":"x",
"subTopics":[{"subTopicId":1,
"number":1}]
};
var selectedSubTopicId = 1;
if (_.some(objectiveDetail.subTopics, function(currentTopic) {
return currentTopic.subTopicId === selectedSubTopicId;
})) {
console.log("selectedSubTopicId exists");
}
输出
selectedSubTopicId exists
你没有问怎么做,但我想那是你想知道的
正如我已经提到的,您可以使用,它将迭代数组中的每个元素并执行回调。在该回调中,您可以测试主题属性的值是否等于变量的值:
var result = _.some(objectiveDetail.subTopics, function (topic) {
return topic.subTopicId === selectedSubTopicId;
});
。如果找到回调返回的true
还有一种更优雅的形式,则一些会跳过剩余的元素:
var result = _.some(objectiveDetail.subTopics, {subTopicId: selectedSubTopicId});
这一条对我来说非常有效:它有助于检查多个数据列,比如标题、类别和描述
要检查这些数据列中是否有stringTosearch
,可以执行以下操作:
let searchResults = _.filter(yourArrayHere, (item) => {
return item.title.indexOf(stringTosearch) > -1
|| item.category.indexOf(stringTosearch) > -1
|| item.description.indexOf(stringTosearch) > -1;
});
它将返回数组中在您指定的任何列中包含stringTosearch
的任何对象。可以(提示:)。谢谢!该值应别名为。.includes
或。.exists
。如果该值未嵌套,则不能使用速记。一些(['a','b','c'],0.partial(.eq,'d'))