kai
(kai)
1
お世話になっております。
JSのカスタマイズで少しわからない部分があり、ご存知の方がいたらご教授よろしくお願いいたします。
連想配列からの抽出を行いたいのですが、処理がうまくいきません。
例)
[常用人工 一式: 10, 常用人工 一式(休日): 0,早出・残業 一式: 39.5, 法定福利費: 83212]
上記ようなの連想配列があります。
これをValue:1以上をfilterメソッドで新たに配列を作りたいです。
サンプルコードも見て、色々とfilterで試しましたうまくいきませんでした。
どなたかいい記述法があればご教授よろしくお願いいたします。
jurippe
(jurippe)
2
こんにちは!
色々試されたコードを貼り付けていただけると、アドバイスもつきやすいかと思います
!
「いいね!」 1
kai
(kai)
3
jurippe様
ご返信ありがとうございます。
下記画像のコードを参考に試していました。


jurippe
(jurippe)
4
参考にしたコードではなくて、
kaiさんが実際に書かれて、動かなかったコードを貼り付けないと多分アドバイスのしようがないような。。。
「いいね!」 1
kai
(kai)
5
失礼しました。
下記が自分が書いたコードです。
画像のコンソール表示(82,86行目)を確認するとfilterで分けたはずの配列が空になっているので「detailWorkInfo」の配列からうまくfilterができていないのかなと思いました。

jurippe
(jurippe)
6
もしかしたら、80行目とか84行目みたいな、
return value["常用なんとか"] >= 1;
こういう感じのところなんですが、
value["常用なんとか"]
これの中身、文字列かも!?
文字列の"1"のような数字とかと、数値の1は別物なので比べられません。
比べるには、文字列の方をNumber()で囲んでみてください
↓こんなかんじに
return Number(value["常用なんとか"] ) >=1;
たぶん、おそらく!
「いいね!」 1
kai
(kai)
7
numberへの型変換を行ってみましたがダメでした。
jurippe
(jurippe)
8
うーん、ちゃんと読んでなくてゴメンナサイ
detailWorkInfoの正体がよくわからないですが
配列じゃないので、detailWorkInfo.filterにしても何も出てこないかもですね
77行目辺りで
detailWorkInfoの中身は何なのかなど調べてやってみるといいかもしれません
!
(追記:77行目でconsole.logで出してましたね
スミマセン)
「いいね!」 1
kai
(kai)
9
detailWorkInfoは空の配列で定義してました。
let detailWorkInfo = ;
console.log(Array.isArray(detailWorkInfo));で配列か確かめたところ、「true」が返ってきました
jurippe
(jurippe)
10
console.logの77行目の出力見ると、うーん、その中身ではfilter動かないきがします。
この画像のようなデータの持ち方をしないと、filter動かないと思います
例えばこんな感じ↓
[
{常用人口一式:'20', 早なんとか:'70',....},
{常用人口一式:'21', 早なんとか:'71',....},
{常用人口一式:'22', 早なんとか:'72',....},
]
「いいね!」 1
kai
(kai)
11
そうゆうことですね。
であればfilter()メソッドを使うのではなくdetailWorkInfoを配列からオブジェクトにし、そこからいらない物を排除する方ができそうな気がしてきました。
ご教授ありがとうございました。助かりました。
「いいね!」 1
system
(system)
クローズされました:
12
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。