たとえば、次の配列があります。
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