回答編集履歴
5
修正コード追記
test
CHANGED
@@ -1,6 +1,39 @@
|
|
1
1
|
feedData関数を呼び出したあとに uniqUnit を作らないといけませんが、feedData関数を呼び出す前に uniqUnit を作っているため `[]` になってしまいます。
|
2
2
|
その後、feedData関数を呼び出しても unit だけが更新され、uniqUnit は更新されません。
|
3
3
|
uniqUnitを更新する処理も関数にして、feedData関数から呼び出してはいかがでしょうか。
|
4
|
+
処理を修正したコードを示しておきます。
|
5
|
+
|
6
|
+
```js
|
7
|
+
let unit = []; // この変数にデータを格納したい
|
8
|
+
let uniqUnit = [];
|
9
|
+
|
10
|
+
function feedData(json) {
|
11
|
+
for (let i = 0; i < json.feed.entry.length; i++) {
|
12
|
+
const jsonFeedEntry = json.feed.entry[i];
|
13
|
+
const imageUrl = "media$thumbnail" in jsonFeedEntry
|
14
|
+
? jsonFeedEntry.media$thumbnail.url
|
15
|
+
: "NoImage";
|
16
|
+
for (let k = 0; k < jsonFeedEntry.link.length; k++) {
|
17
|
+
if (jsonFeedEntry.link[k].rel == "alternate") {
|
18
|
+
const unitObject = {};
|
19
|
+
unitObject.title = jsonFeedEntry.title.$t;
|
20
|
+
unitObject.link = jsonFeedEntry.link[k].href;
|
21
|
+
unitObject.image = imageUrl;
|
22
|
+
unit.push(unitObject);
|
23
|
+
}
|
24
|
+
}
|
25
|
+
}
|
26
|
+
updateUniqUnit();
|
27
|
+
}
|
28
|
+
|
29
|
+
function updateUniqUnit() {
|
30
|
+
console.log('unit:', unit);
|
31
|
+
uniqUnit = Array.from(
|
32
|
+
new Map(unit.map((data) => [data.link, data])).values() // 回答をもとに修正
|
33
|
+
);
|
34
|
+
console.log('uniqUnit:', uniqUnit); // Array(0)となってしまう
|
35
|
+
}
|
36
|
+
```
|
4
37
|
|
5
38
|
unit.map で key と value の配列にして Map を作ります。
|
6
39
|
|
4
原因追記
test
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
feedData関数を呼び出したあとに uniqUnit を作らないといけませんが、feedData関数を呼び出す前に uniqUnit を作っているため `[]` になってしまいます。
|
2
|
+
その後、feedData関数を呼び出しても unit だけが更新され、uniqUnit は更新されません。
|
3
|
+
uniqUnitを更新する処理も関数にして、feedData関数から呼び出してはいかがでしょうか。
|
4
|
+
|
1
5
|
unit.map で key と value の配列にして Map を作ります。
|
2
6
|
|
3
7
|
```diff
|
3
実行結果追記
test
CHANGED
@@ -19,3 +19,22 @@
|
|
19
19
|
console.log(uniqUnit);
|
20
20
|
```
|
21
21
|
|
22
|
+
```text:実行結果
|
23
|
+
[
|
24
|
+
{
|
25
|
+
title: 'appleとbanana',
|
26
|
+
link: 'https:...apple-banana.html',
|
27
|
+
image: 'https:...jpg'
|
28
|
+
},
|
29
|
+
{
|
30
|
+
title: 'apple',
|
31
|
+
link: 'https:...apple.html',
|
32
|
+
image: 'https:...jpg'
|
33
|
+
},
|
34
|
+
{
|
35
|
+
title: 'banana',
|
36
|
+
link: 'https:...banana.html',
|
37
|
+
image: 'https:...jpg'
|
38
|
+
}
|
39
|
+
]
|
40
|
+
```
|
2
コード追記
test
CHANGED
@@ -4,3 +4,18 @@
|
|
4
4
|
- new Map(unit.map((data) => [data, data.link, data])).values()
|
5
5
|
+ new Map(unit.map((data) => [data.link, data])).values()
|
6
6
|
```
|
7
|
+
|
8
|
+
```js
|
9
|
+
const unit = [
|
10
|
+
{title: 'appleとbanana', link: 'https:...apple-banana.html', image: 'https:...jpg'},
|
11
|
+
{title: 'apple', link: 'https:...apple.html', image: 'https:...jpg'},
|
12
|
+
{title: 'appleとbanana', link: 'https:...apple-banana.html', image: 'https:...jpg'},
|
13
|
+
{title: 'banana', link: 'https:...banana.html', image: 'https:...jpg'},
|
14
|
+
];
|
15
|
+
|
16
|
+
const uniqUnit = Array.from(
|
17
|
+
new Map(unit.map(data => [data.link, data])).values()
|
18
|
+
);
|
19
|
+
console.log(uniqUnit);
|
20
|
+
```
|
21
|
+
|
1
訂正
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
key と value の配列に
|
1
|
+
unit.map で key と value の配列にして Map を作ります。
|
2
2
|
|
3
3
|
```diff
|
4
4
|
- new Map(unit.map((data) => [data, data.link, data])).values()
|