この問題は、map()の使用に関する私の以前の投稿の1つで、標準if/elseブロックを使用して解決されました。しかし、今私は別の問題があります。ここでは、if/elseを使用したソリューションがあります。機能矢印のあるマップ()が機能しないのはなぜですか?
<!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>Transforming Data</title>
<script src="https://unpkg.com/[email protected]/babel.min.js"></script>
</head>
<body>
<h1>Transforming Data</h1>
<p>Open the console</p>
<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: newName
}
}
else {
return item
}
});
let updatedSchools = editName('Stratford', 'HB Woodlawn', schools);
console.log(updatedSchools[1]); // {name: "HB Woodlawn"}
console.log(schools[1]); // {name: "Stratford"}
</script>
</body>
</html>
しかし、機能矢印を使用しているときは私にはうまくいきません。置換時にマッピングが行われません。しかし、私は同じソリューション、すなわち: '名前:名前'を使用しています。私は間違って何をしていますか?
<!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>Transforming Data</title>
<script src="https://unpkg.com/[email protected].15.0/babel.min.js"></script>
</head>
<body>
<h1>Transforming Data</h1>
<p>Open the console</p>
<script type="text/babel">
let schools = [
'Yorktown',
'Stratford',
'Washington & Lee',
'Wakefield'
];
const editName = (oldName, name, arr) =>
arr.map(item => (item.name === oldName) ?
({...item, name: name}) :
item
);
let updatedSchools = editName('Stratford', 'HB Woodlawn', schools);
console.log(updatedSchools[1]); // Stratford
console.log(schools[1]); // Stratford
</script>
</body>
</html>
あなたの新しい配列は文字列配列ではなく、オブジェクト配列であるため、 'item.name'は常に未定義 – user184994
を返します。つまり、' name'の性質を持っていません'item.name'は未定義です – Niladri