2016-11-12 86 views
1

我想实现的功能“markActive”,其中,由于对象和ID列表时,返回相同的列表,但相应的对象标记为活动的,例如像的Javascript MarkActive功能

var list = [ 
      { id: 1, active: false }, 
      { id: 2, active: false }, 
      { id: 3, active: true }, 
      { id: 4, active: false } 
     ]; 

函数调用时

markActive(list, 2); 

应该返回:

[ 
{ id: 1, active: false }, 
{ id: 2, active: true }, 
{ id: 3, active: false }, 
{ id: 4, active: false } 
] 

我试着许多循环,但每次我得到undefined, 谢谢你提前。

回答

2

您可以迭代数组并设置active并检查id

function markActive(array, id) { 
 
    array.forEach(function (o) { 
 
     o.active = o.id === id; 
 
    }); 
 
    return list; 
 
} 
 

 
var list = [{ id: 1, active: false }, { id: 2, active: false }, { id: 3, active: true }, { id: 4, active: false }]; 
 

 
console.log(markActive(list, 2));
.as-console-wrapper { max-height: 100% !important; top: 0; }

0

使用Array#forEach

var list = [{ 
 
    id: 1, 
 
    active: false 
 
}, { 
 
    id: 2, 
 
    active: false 
 
}, { 
 
    id: 3, 
 
    active: true 
 
}, { 
 
    id: 4, 
 
    active: false 
 
}]; 
 

 
function markActive(list, id) { 
 
    list.forEach(function(el) { 
 
    if (el.id == id) { 
 
     el.active = true; 
 
    } else { 
 
     el.active = false; 
 
    } 
 
    }); 
 
} 
 
markActive(list, 2); 
 
console.log(list);

0

设置一切为无效,除非该ID应设置为活动的,那么做

function markActive(list, item) { 
    list.forEach(function(element) { 
    if (element.active) { 
      element.active = false; 
     } 
    if (element.id === item) { 
    console.log(item) 
     element.active = true; 
    } 
    }) 
}