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

わんくま同盟

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

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

ツリー一括表示

map関数のObject名指定について /さくぼう (21/11/01(Mon) 10:29) #98321
Re[1]: map関数のObject名指定について /Hongliang (21/11/01(Mon) 10:53) #98322
  └ Re[2]: map関数のObject名指定について /さくぼう (21/11/01(Mon) 10:58) #98323
    └ Re[3]: map関数のObject名指定について /Hongliang (21/11/01(Mon) 11:33) #98324
      └ Re[4]: map関数のObject名指定について /さくぼう (21/11/01(Mon) 16:17) #98326
        └ Re[5]: map関数のObject名指定について /魔界の仮面弁士 (21/11/01(Mon) 16:40) #98327
          └ Re[6]: map関数のObject名指定について /さくぼう (21/11/01(Mon) 16:54) #98328 解決済み


親記事 / ▼[ 98322 ]
■98321 / 親階層)  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」を指定した引数で取得したいです
}

[ □ Tree ] 返信 編集キー/

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

arr.find(elem => elem.name === itemName).item;
[ 親 98321 / □ Tree ] 返信 編集キー/

▲[ 98322 ] / ▼[ 98324 ]
■98323 / 2階層)  Re[2]: map関数のObject名指定について
□投稿者/ さくぼう (6回)-(2021/11/01(Mon) 10:58:09)
No98322 (Hongliang さん) に返信

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

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


[ 親 98321 / □ Tree ] 返信 編集キー/

▲[ 98323 ] / ▼[ 98326 ]
■98324 / 3階層)  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 } ]
が欲しいと言うことでしょうか。
[ 親 98321 / □ Tree ] 返信 編集キー/

▲[ 98324 ] / ▼[ 98327 ]
■98326 / 4階層)  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}`);と書いてもダメなので質問させて頂きました。。
宜しくお願い致します。
[ 親 98321 / □ Tree ] 返信 編集キー/

▲[ 98326 ] / ▼[ 98328 ]
■98327 / 5階層)  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]
[ 親 98321 / □ Tree ] 返信 編集キー/

▲[ 98327 ] / 返信無し
■98328 / 6階層)  Re[6]: map関数のObject名指定について
□投稿者/ さくぼう (10回)-(2021/11/01(Mon) 16:54:44)
No98327 (魔界の仮面弁士 さん) に返信
ありがとうございます!

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

解決済み
[ 親 98321 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -