連想配列の抽出について

お世話になっております。

JSのカスタマイズで少しわからない部分があり、ご存知の方がいたらご教授よろしくお願いいたします。
連想配列からの抽出を行いたいのですが、処理がうまくいきません。
例)
[常用人工 一式: 10, 常用人工 一式(休日): 0,早出・残業 一式: 39.5, 法定福利費: 83212]
上記ようなの連想配列があります。
これをValue:1以上をfilterメソッドで新たに配列を作りたいです。
サンプルコードも見て、色々とfilterで試しましたうまくいきませんでした。
どなたかいい記述法があればご教授よろしくお願いいたします。

こんにちは!

色々試されたコードを貼り付けていただけると、アドバイスもつきやすいかと思います:eyes:

「いいね!」 1

jurippe様
ご返信ありがとうございます。
下記画像のコードを参考に試していました。
image
image

参考にしたコードではなくて、
kaiさんが実際に書かれて、動かなかったコードを貼り付けないと多分アドバイスのしようがないような。。。:pleading_face:

「いいね!」 1

失礼しました。
下記が自分が書いたコードです。
画像のコンソール表示(82,86行目)を確認するとfilterで分けたはずの配列が空になっているので「detailWorkInfo」の配列からうまくfilterができていないのかなと思いました。

image

もしかしたら、80行目とか84行目みたいな、

return value["常用なんとか"] >= 1;

こういう感じのところなんですが、

value["常用なんとか"] 

これの中身、文字列かも!?

文字列の"1"のような数字とかと、数値の1は別物なので比べられません。

比べるには、文字列の方をNumber()で囲んでみてください
↓こんなかんじに

return Number(value["常用なんとか"] ) >=1;

たぶん、おそらく!

「いいね!」 1


numberへの型変換を行ってみましたがダメでした。

うーん、ちゃんと読んでなくてゴメンナサイ:sweat_drops:
detailWorkInfoの正体がよくわからないですが
配列じゃないので、detailWorkInfo.filterにしても何も出てこないかもですね:sweat_drops:

77行目辺りで
detailWorkInfoの中身は何なのかなど調べてやってみるといいかもしれません:eyes:

(追記:77行目でconsole.logで出してましたね:sweat_drops:スミマセン)

「いいね!」 1

detailWorkInfoは空の配列で定義してました。
let detailWorkInfo = ;

console.log(Array.isArray(detailWorkInfo));で配列か確かめたところ、「true」が返ってきました

console.logの77行目の出力見ると、うーん、その中身ではfilter動かないきがします。

この画像のようなデータの持ち方をしないと、filter動かないと思います:eyes:
例えばこんな感じ↓

[
{常用人口一式:'20', 早なんとか:'70',....},
{常用人口一式:'21', 早なんとか:'71',....},
{常用人口一式:'22', 早なんとか:'72',....},
]
「いいね!」 1

そうゆうことですね。
であればfilter()メソッドを使うのではなくdetailWorkInfoを配列からオブジェクトにし、そこからいらない物を排除する方ができそうな気がしてきました。

ご教授ありがとうございました。助かりました。

「いいね!」 1

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。