javascript - 如何重构这段代码?我有 3 个标签需要在列表中重新选择

标签 javascript loops for-loop

for (var i=0; i<vm.tags.length; i++) {
    if (selectedTags[0]) {
        if (vm.tags[i].term_id === selectedTags[0].term_id) {
            vm.tags[i].border1 = true;
        }
    }

    if (selectedTags[1]) {
        if (vm.tags[i].term_id === selectedTags[1].term_id) {
            vm.tags[i].border2 = true;
        }
    }

    if (selectedTags[2]) {
        if (vm.tags[i].term_id === selectedTags[2].term_id) {
            vm.tags[i].border3 = true;
        }
    }
}

vm.tags 是完整列表,最多 20 多个标签。 selectedTags 是一个最多包含 3 个标签的数组,基本上 3 个标签可能包含与 vm.tags 内的标签相同的 id。

如果 vm.tags 内的标签与 selectedTag 中的标签匹配,我需要更改这些 vm.tags 上的边框值。

还有比上面更好的方法吗?我有重复代码的地方。

<小时/>

selectedTags 数组示例:

[对象,对象,对象]

数组中的对象示例:

{
    selected: true,
    term: "term_name",
    term_id: 2349506
}

最佳答案

检查一下:

for (var i=0; i<vm.tags.length; i++) {
  for(var j=0; j<selectedTags.length; j++){
    if(selectedTags[j].term_id === vm.tags[i].term_id ){
      var name = 'border'+ ( j + 1 );  
      vm.tags[i][name] = true;
    }
  }
}

关于javascript - 如何重构这段代码?我有 3 个标签需要在列表中重新选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35297880/

相关文章:

javascript - Meteor - 简单的搜索问题

azure - 地形循环

javascript - 如何在不卡住浏览器的情况下在 JavaScript 中使用计时器循环?

c - C 中的数字序列移位?

c - 使用缓存局部性改进加法函数

javascript - 循环数组中的对象,显示 JSON 数据

javascript - 如何使用 AngularJS 更改 Bootstrap UI 分页中的文本和样式?

javascript - 从另一个站点返回后 PopState 没有触发

c - 当您将学生人数的值输入为 3 时,这个 while 循环如何打印 3 作为 cnt 的值而不是 2?

javascript - 如何使用 DOM 更改 HTML 表格第一行中的按钮? (通过 DOM 添加和删除行)