我有两组数组,$scope.Skills
和$scope.skillslist
。
Skills
数组有很多值,所以我只包括与问题相关的数据:
$scope.Skills = [
{LotsOfValues: "blah", Skill_Values__c: "1"},
{LotsOfValues: "blah", Skill_Values__c: "2"},
{LotsOfValues: "blah", Skill_Values__c: "3"}
];
skillslist
数组:
$scope.skillslist = [
{Skill_Values__c: "1", Checked: ""},
{Skill_Values__c: "2", Checked: ""},
{Skill_Values__c: "3", Checked: ""},
{Skill_Values__c: "4", Checked: ""},
{Skill_Values__c: "5", Checked: ""},
{Skill_Values__c: "6", Checked: ""},
{Skill_Values__c: "7", Checked: ""}
];
我想要做的是,对于skillslist
中的每个项目,针对Skills
中的项目运行它,如果匹配,则将Checked设置为true,如果未设置它是假的。如何实现这一目标?
我使用forEach函数,这是我到目前为止所做的:
angular.forEach(skills, function (value) {
console.log("FOR EACH");
for (var i = 0; i <= $scope.skillslist.length; i++) {
if ($scope.skillslist[i].Skill_Values__c === value.Skill_Values__c) {
$scope.skillslist[i].Checked = "Added";
} else {
$scope.skillslist[i].Checked = "no";
}
}
});
但是我马上就知道自己错了,因为我应该寻找每个skillslist
对吗?但是当我这样做时,我不知道如何更改每个的Checked值。交换Skills
的所有skillslist
都没有帮助。
在skillslist
的ng-repeat中,我看到第一个项目的Checked值为&#34;已添加&#34;,其余项目的Checked值为&#34; no&#34;。
我一直在阅读每个示例,但无法找到与我尝试做的任何相关的事情,以这种方式引用两个不同的数组。任何指针都将不胜感激!
答案 0 :(得分:3)
如果您正在迭代skillslist
,则传递给回调的每个值都将是skillslist
的单个值。因此,如果要更改skillslist
的值,可以通过更改传递给回调的第一个参数来实现。像这样:
skillslist.forEach(function(skill) {
var isInSkills = skills.some(function(skillValue) {
return skillValue.Skill_Values__c === skill.Skill_Values__c;
});
if(isInSkills) {
skill.checked = "Added";
} else {
skill.checked = "no";
}
});
答案 1 :(得分:0)