前提・実現したいこと
javascript で以下のように特定のキーの値のみ抜き出したいのですが
そのような方法はありますか?
numというキーの値のみ抜き出したいです
before
1const obj1 = { 2 num: 1, 3 hoge: ture, 4 hage: false, 5}
after
1const obj2 = { 2 num: 1 3}
obj1.numだと1の値しか取れず、
オブジェクトとしてキーも一緒に欲しいです。
前提・実現したいこと2
質問を変えます
obj1にobj2のaaaのみをマージしたいです
before
1const obj1 = { 2 num: 1, 3 hoge: ture, 4 hage: false, 5}
after
1const obj2 = { 2 aaa: 1, 3 bbb: 1, 4 ccc: 1, 5}
const test = obj1 = { ...obj1, {aaa: obj2.aaa} }
にすればいいのはわかるのですが、
もう少しobj2からaaaのみフィルターをかけたものをマージする、といったソースにできないですか?
詰め替えではなく。
const obj2 = {
num: obj1.num
}
ではダメなのですか?
そうですね。
{
num: 1
}
この形欲しいです。
余分なキーを全て排除した形で欲しいです。
他とマージするのにその形がよくて。
値とって形成し直すのはやめたくて。
何か一行でいい感じに行かないものかと・・
質問が途中で切れているようです
「余分なキーを全て排除した形」とはどんな形ですか?
リテラルで書く、ということでしょうか?
> 値とって形成し直すのはやめたくて。
何か一行でいい感じに行かないものかと・・
値が1つしかないのだから、そのままとっても1行で済むかと思います。
>この形欲しいです。
できてますが、何が違うんでしょう。
前提や背景も欲しいですね。なんのためにそうするのか、何に使うのか。
もしかして、破壊的操作にしたいということかな……?
例えばmap等を使ってとか・・・
このnumを二回書く感じじゃないパターンでないでしょうか?
そのやり方以外で。
よくわからないな……
num という文字列がコードに2回現れなければいいのですか?
> このnumを二回書く感じじゃないパターンでないでしょうか?そのやり方以外で。
numを一度で済ませていちばんシンプルな書き方としては、const key='num', obj2 = {[key]: obj[key]};のようなものが考えられます。
…というように、「特定のやり方以外」と言われると思いも寄らない回答が寄せられて、役に立たない危険が大いにあります。「何のために」「どのようなやり方」を求めるのかを明確にしてください。
> もう少しobj2からaaaのみフィルターをかけたものをマージする、といったソースにできないですか?
それは何のために必要なのですか?(出来上がるオブジェクトには何ら影響しません)
正しく動くものではなく、書き方にこだわるのはそんなにダメなことでしょうか?
自分の質問が悪かったかもしれないので質問編集しました。
>maisumakun
すみません、フィルターしたものをマージするといった感じのソースが書きたいからです
自分ではmaisumakunさんと同じコードしか考えつかなかったので、
もう少しいいコーディングがないか質問したのです
> もう少しいいコーディングがないか質問したのです
「固定のキーを1つ」という条件なら、これが最善かと思います。シンプルイズベストです。
> 正しく動くものではなく、書き方にこだわるのはそんなにダメなことでしょうか?
「コードが長くなって読みにくくなる」ような、合理性の乏しいコードになってしまうので、特定のコード要素を使うのを禁じられたパズルでもなければこだわる理由が見いだせない、という感覚です。
質問の編集を拝読。
要は、好みの問題なのですね……
ちなみに、suwmn50799さんのご回答は「aaaのみフィルターをかけたもの」を満たしていそうですが、そちらでダメな理由は何なのですか?
これがだめとかではなく、他に方法はないのかと思いまして。
自分もそうやりますが、
aaaのオブジェクトをつくり詰め替えるのではなく
filterのようなもので出してくることがjavascriptで出来るのであればそれを使いたいと思いました。
常にaaaが固定かも分かりませんし、増えることもあるかもしれません。
(今はないですが、そうなった場合のことを考えて)
{
aaa: obj2.aaa
bbb: obj2.bbb
ccc: obj2.ccc
}
みたいになるのが嫌だっただけです。
keyに[aaa,bbb,ccc]がincludeされてる値だけフィルダーして配列にセット、みたいなことが
もし一行でできるなら、そちらで書きたいと思っただけです。
今のaaa固定なら、どちらもかわらないでしょうけど。
個数が増えたら、どうなんでしょうか。
suwmn50799さんのご回答はフィルタをかけていますよ。読みましたか?
... Object.entries(object).filter( ...
そうです!
今から返答を書く予定です。
自分の理想としてはこちらの回答です。
詰め替えがなぜだめなのかと聞かれたので先にこちらへ返答となりました
そうでしたか、ご解決されて何よりです。
回答2件
あなたの回答
tips
プレビュー