我有以下对象
0: {Dep_key: 1, sex: 2, dep: "HR department", Staff_name: "Hassan",
Staff_Key: 782, …}
1: {Dep_key: 1, sex: 2, dep: "sales department", Staff_name: "Ahmed",
Staff_Key: 813, …}
2: {Dep_key: 1, sex: 2, dep: "Marketing", Staff_name: "Hossam",
Staff_Key: 817, …}
,我想将Dep_key
(s)的唯一值插入数组。
我做了
$scope.leftdept = function (m) {
console.log(m);
for (i = 0; i < m.length; i++) {
if ($scope.depts.indexOf(m[i].Dep_key) === -1) {
$scope.depts.push(m[i].Dep_key);
}
else {
var index = $scope.depts.indexOf(m);
$scope.depts.splice(index, 1);
}
}
console.log($scope.depts);
}
但我的代码未插入所有Dep_key
。有什么帮助吗?
谢谢
答案 0 :(得分:1)
如果只需要唯一的Dep_key
,则可以删除else
块
您是在第一次出现的Dep_key
块中插入“新” if
,但是如果循环中存在相同的Dep_key
,请在else
子句中插入您正在删除它。当数组中有2个Dep_key
时,将永远不会在输出中获得它。另外,您将获得var index = $scope.depts.indexOf(m);
数组的m
而不是m[i]
,但是正如我所说的,您只能拥有if
并且代码应该可以工作
$scope.leftdept = function (m) {
console.log(m);
for (i = 0; i < m.length; i++) {
if ($scope.depts.indexOf(m[i].Dep_key) === -1) {
$scope.depts.push(m[i].Dep_key);
}
}
console.log($scope.depts);
}