2017-07-08 74 views
1

爲什麼傳播運算符在這裏用'HB woodlawn'代替'Stratford'的值?這個怎麼用?傳播運營商取代價值?

const editName = (oldName, name, arr) => 
    arr.map(item => { 
    if (item.name === oldName) { 
     return { 
     ...item, 
     name 
     } 
    } else { 
     return item 
    } 
    }) 

let schools = [ 
    { name: "Yorktown"}, 
    { name: "Stratford" }, 
    { name: "Washington & Lee"}, 
    { name: "Wakefield"} 
] 
let updatedSchools = editName("Stratford", "HB Woodlawn", schools) 
console.log(updatedSchools[1]) // { name: "HB Woodlawn" } 
console.log(schools[1]) // { name: "Stratford" }, 

回答

4

什麼它歸結爲是這樣的:

const oldObject = { name: 'Stratford' }; 
const newObject = { ...oldObject, name: 'HB Woodlawn' }; 

,你能想到的作爲擴大oldObject的屬性到新對象字面:

const newObject = { name: 'Stratford', name: 'HB Woodlawn' }; 

屬性具有相同鍵入一個字面值得到最後一個值。

+0

應該糾正爲: '常量NEWOBJECT = {名稱: 'HB伍德朗'};' – Azmeer

+0

@Azmeer:現在的問題是關於重複屬性的名稱是如何工作的,所以沒有。 – Ryan