2016-11-12 81 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; 
    } 
    }) 
}