• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

为什么我的map()与spread操作符不起作用?

JavaScript 来源:Ron Allen Smith 3次浏览

我真的没有看到这是错的地方。我从O’Reilly的Learning React中看到了这个特殊例子的帖子,银行& Porcello。然而,这些帖子似乎工作正常,但我的例子没有。如果我有一个错字,我不会看到它。我的缺点在哪里?我不知道为什么我得到一个空字符串值,而不是为什么我的map()与spread操作符不起作用?

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <meta name="viewport" 
     content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> 
    <meta http-equiv="X-UA-Compatible" content="ie=edge"> 
    <title></title> 
    <script src="https://unpkg.com/[email protected]/babel.min.js"></script> 
</head> 
<body> 

    <script type="text/babel"> 

    // Editing one object in an array of objects 

    let schools = [ 
     {name: 'Yorktown'}, 
     {name: 'Stratford'}, 
     {name: 'Washington & Lee'}, 
     {name: 'Wakefield'} 
    ]; 

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

    let updatedSchools = editName('Stratford', 'HB Woodlawn', schools); 

    console.log(updatedSchools[1]); // name: "" 
    console.log(schools[1]); // name: "Stratford" 

    </script> 

</body> 
</html> 


===========解决方案如下:

let schools = [ 
    {name: 'Yorktown'}, 
    {name: 'Stratford'}, 
    {name: 'Washington & Lee'}, 
    {name: 'Wakefield'} 
]; 

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

let updatedSchools = editName('Stratford', 'HB Woodlawn', schools); 

console.log(updatedSchools[1]); // name: "" 
console.log(schools[1]); // name: "Stratford" 

您没有添加的名称的新值“HB伍德朗”,而不是离开它空。新增name:newName


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)