C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: map関数のObject名指定について


(過去ログ 170 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■98321 / inTopicNo.1)  map関数のObject名指定について
  
□投稿者/ さくぼう (5回)-(2021/11/01(Mon) 10:29:18)

分類:[JavaScript] 

こんにちは。
配列のmap関数を使って配列内のObject名指定のサブ要素を取得したいのですが、
共通関数化したい時、どのように書くのでしょうか?

初歩的な質問で申し訳ありません。

var arr = [
 {id: 1, name:"nama1", item: { id: 1},
 {id: 1, name:"nama2", item: { id: 2},
]

async function getItem(itemName) {
  return await arr.map(({item}) => item); ←こう書けばitemだけの配列は取れますが、「itemName」を指定した引数で取得したいです
}

引用返信 編集キー/
■98322 / inTopicNo.2)  Re[1]: map関数のObject名指定について
□投稿者/ Hongliang (1200回)-(2021/11/01(Mon) 10:53:02)
getItemであってgetItemsでないということは、返値は単一でいいんですよね。
ならfindメソッドひとつで十分に思えますが、どうでしょう。

arr.find(elem => elem.name === itemName).item;
引用返信 編集キー/
■98323 / inTopicNo.3)  Re[2]: map関数のObject名指定について
□投稿者/ さくぼう (6回)-(2021/11/01(Mon) 10:58:09)
No98322 (Hongliang さん) に返信

> getItemであってgetItemsでないということは、返値は単一でいいんですよね。
> ならfindメソッドひとつで十分に思えますが、どうでしょう。

ありがとうございます。
この配列(arr)は例で書いたもので、itemは別の変数名だったり可変になります。


引用返信 編集キー/
■98324 / inTopicNo.4)  Re[3]: map関数のObject名指定について
□投稿者/ Hongliang (1201回)-(2021/11/01(Mon) 11:33:01)
const arr = [
{ name: "a", item: { id: 1 }, obj: { key: 5 } },
{ name: "b", item: { id: 2 }, obj: { key: 6 } }
];
に対して、
func("item"); // -> [ { id: 1 }, { id: 2 } ]
func("obj"); // -> [ { key: 5 }, { key: 6 } ]
が欲しいと言うことでしょうか。
引用返信 編集キー/
■98326 / inTopicNo.5)  Re[4]: map関数のObject名指定について
□投稿者/ さくぼう (8回)-(2021/11/01(Mon) 16:17:26)
No98324 (Hongliang さん) に返信
ありがとうございます。
仰る通り↓の様に、引数でObject名を指定して中身を取り出したいです。

func("item"); // -> [ { id: 1 }, { id: 2 } ]



ただ、この様に取ったらitemNameと言う要素になって、配列にはitemが入ってるのでNullが返りますよね。。
function getItem(itemName) {
return arr.map(({itemName}) => itemName);
}

arr.map(({`${itemName}` }) => `${itemName}`);と書いてもダメなので質問させて頂きました。。
宜しくお願い致します。
引用返信 編集キー/
■98327 / inTopicNo.6)  Re[5]: map関数のObject名指定について
□投稿者/ 魔界の仮面弁士 (3203回)-(2021/11/01(Mon) 16:40:08)
No98326 (さくぼう さん) に返信
> ただ、この様に取ったらitemNameと言う要素になって、配列にはitemが入ってるのでNullが返りますよね。。

これではどうでしょう。(async / await は使ったこと無いので分かりませんが)

function getItem(itemName) {
return arr.map((x) => x[itemName]);
}

// getItem('item') → [{id:1},{id:2}]
// getItem('name') → ['nama1','nama2']
// getItem('id') → [1,1]
// getItem('ID') → [undefined,undefined]
引用返信 編集キー/
■98328 / inTopicNo.7)  Re[6]: map関数のObject名指定について
□投稿者/ さくぼう (10回)-(2021/11/01(Mon) 16:54:44)
No98327 (魔界の仮面弁士 さん) に返信
ありがとうございます!

> function getItem(itemName) {
> return arr.map((x) => x[itemName]);
> }
こちらの方法で取れました!
そうですね。Object名に固執しなくてもこれで取ればいいんですね。
本当にありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -