Javascript 如果数组对象中不存在,则推送
我有下面的JS模型。我使用的是角jsJavascript 如果数组对象中不存在,则推送,javascript,angularjs,Javascript,Angularjs,我有下面的JS模型。我使用的是角js $scope.data = { FocusOn: " ", Filters: [], Range: { From: "", To: "" } } 我有以下功能: $scope. addField = function ($type, $value) { $sc
$scope.data = {
FocusOn: " ",
Filters: [],
Range: {
From: "",
To: ""
}
}
我有以下功能:
$scope. addField = function ($type, $value) {
$scope.data1 = {
FilterName: $type,
FilterValue: $value
};
if ($scope.data.Filters[$type] === undefined) {
$scope.data.Filters.push($scope.data1);
}
$scope.data1 = "";
$scope.Json = angular.toJson($scope.data);
};
如果过滤器不可用,我想按下它。我怎样才能做到这一点
我试过上面的方法,但效果不好。出了什么问题。
谁能帮帮我吗
谢谢,试试看:
$scope.addField = function ($type, $value) {
$scope.data1 = {
FilterName: $type,
FilterValue: $value
};
if ($scope.data.Filters[$type] == undefined) {
$scope.data.Filters[$type] = $scope.data1;
}
$scope.data1 = "";
$scope.Json = angular.toJson($scope.data);
};
因此,我假设
$scope.data.Filters
是一个具有FilterName
和FilterValue
属性的对象数组
在这种情况下,您实际上需要在插入之前搜索数组,通过比较对象属性的值(深度相等检查,而不是浅相等检查,后者是indexOf()
)
如果使用或,则可以使用.findWhere()
帮助程序轻松完成此操作:
if (!_.findWhere($scope.data.Filters, $scope.data1)) {
$scope.data.Filters.push($scope.data1);
}
否则,您可以创建自己的函数,因此您的完整代码如下所示:
$scope.addField = function ($type, $value) {
$scope.data1 = {
FilterName: $type,
FilterValue: $value
};
if (!filterExists($type)) {
$scope.data.Filters.push($scope.data1);
}
$scope.data1 = "";
$scope.Json = angular.toJson($scope.data);
};
function filterExists(type) {
for (var i = 0, len = $scope.data.Filters.length; i < len; i++) {
if ($scope.data.Filters[i].FilterName === type)
return true;
}
return false;
}
$scope.addField=函数($type,$value){
$scope.data1={
过滤器名称:$type,
FilterValue:$value
};
如果(!filterExists($type)){
$scope.data.Filters.push($scope.data1);
}
$scope.data1=“”;
$scope.Json=angular.toJson($scope.data);
};
函数筛选器存在(类型){
对于(变量i=0,len=$scope.data.Filters.length;i
只是一个提示:在函数参数前面加上$
会让其他开发人员感到困惑。使用AngularJS时,只有核心角度函数的前缀是$
,因此您知道什么是核心AngularJS功能,以及您的代码是什么。@GregL知道了。Thanks@Backtrack如果答案对你有用,别忘了接受。