javascript - オブジェクト値の配列を数値に変換する方法

okwaves2024-01-25  184

たとえば、次の配列があります。

 const arr = [
    {val1: '123', text: 'not a num', new:'123.34'},
    {val1: '123', text: 'not a number', new:'123.34'},
    {val1: '123', text: 'yahoo', new:'123.34'}
    ]

そして、キー val1 と new を数値に変換したいと考えています。

そこで、この関数を作成しました。

const convertToNumbers = (arr: Array<{ unknown }>, keys: Array<string>) => {
  return arr.map((val) => {
    keys.map((k) => {
      console.log(val[k]);
      return (val[k] = +val[k]);
    });
   
  });
};

期待される結果は次のようになります:

   const result = [
        {val1: 123, text: 'not a num', new:123.34},
        {val1: 123, text: 'not a number', new:123.34},
        {val1: 123, text: 'yahoo', new:123.34}
        ]

関数は両方の配列を受け入れます (最初のパラメータは配列そのもので、2 番目のパラメータには数値に変換されるキーが含まれます)。

問題を解決する方法はありますか?

これをインプレースで実行しますか、それとも適切なキーが変換されたオブジェクトのコピーを含む新しい配列を返しますか?

– ジェイミエック

2020 年 9 月 3 日 11:55

parseInt または parseFloat を使用して変換を行うことができます

– ミッケル

2020 年 9 月 3 日 11:56

新しい配列の方が優れています

– アジビー

2020 年 9 月 3 日 11:56

.map() (keys.map((k) => ...)) の戻り値に興味がない場合、.map() は間違ったツールです

– アンドレアス

2020 年 9 月 3 日 11:57

これであなたの質問は解決しましたか?オブジェクトの配列の値を整数値に変換します

– いつも助けてくれる

2020 年 9 月 3 日 12:03



------------------------

新しいオブジェクトをマッピングし、必要なキーを変換できます。

const 
    array = [{ val1: '1,234', text: 'not a num', new:'123.34' }, { val1: '123', text: 'not a number', new:'123.34' }, { val1: '123', text: 'yahoo', new:'123.34' }],
    keys = ['val1', 'new'],
    result = array.map(object => ({
        ...object,
        ...Object.fromEntries(keys.map(key => [key, +object[key].replace(/[^\d.]/g, '')]))
    }));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

3

このメソッド [key, +object[key].replace(/,/g, '')] でカンマも削除しようとしていますが、うまくいきません – アジビー

2020 年 9 月 3 日 12:03

申し訳ありませんが、例に追加するのを忘れていました...たとえばe 1,299 ~ 1299

– アジビー

2020 年 9 月 3 日 12:05

不要な文字を置き換える必要があります。編集を参照してください。

– ニーナ・ショルツ

2020 年 9 月 3 日 12:14



------------------------

const arr = [
    {val1: '123', text: 'not a num', new:'123.34'},
    {val1: '123', text: 'not a number', new:'123.34'},
    {val1: '123', text: 'yahoo', new:'123.34'}
    ]
var text = "";
var i;
for (i = 0; i < arr.length; i++) {
  text += arr[i].val1;
}
document.getElementById("demo").innerHTML = text;
<p id="demo"></p>

共有 この回答を改善しますフォローする

2020 年 9 月 3 日 12:09 に回答

ディーパック・シャルマ

ディーパック・シャルマ

1

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。