如果数组对象中不存在,则推送
push if not exist in array object
我在JS中有以下模型。我正在使用角度 js
$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.data.Filters
是一个具有FilterName
和FilterValue
属性的对象数组。
在这种情况下,您实际上需要在插入之前搜索数组以查看是否存在匹配的对象,方法是比较对象的属性值(深度相等性检查,而不是indexOf()
执行的浅层相等检查)。
如果使用 lodash 或下划线,则可以使用 _.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 = 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);
};
相关文章:
- Emberjs#每个循环不处理数组数据
- Javascript拼接对象而不是数组
- JavaScript对象中存在数组的问题
- Angularjs:如何删除动态表行,但不从数组中删除
- 局部数组变量不是数组
- Javascript:push 不是数组的函数
- 解析查询查找方法返回对象而不是数组
- 为什么删除运算符不更改数组的长度
- 在数据表中使用 JSON 对象而不是数组
- 谷歌图表错误'不是数组'关于Ajax更新
- 为什么此代码返回未定义的4次而不是数组值
- 如何在不创建数组的情况下使用NgFor来生成矩阵UI模式
- 如何在Angular中设置异步HTTP服务的回调,以便在不定义数组的情况下在控制器中填充数组
- Ng重复不随数组变化而更新
- 数组长度不等于数组对象
- JSON.stringify不转换数组
- AngularJS 1.2.0 $http不保留数组元素
- 如何将变量设置为给定时刻数组的值,而不是数组的任何值
- 在javascript中,如何将相同的对象两次推送到一个数组中,并进行一些修改而不覆盖数组
- 函数看不到数组中的更改