如何从数组中剥离美元符号并仅保留数字? js

时间:2019-02-23 21:09:33

标签: javascript html

使用下面的代码,我试图通过javascript中的类名称获取元素,并将它们存储在数组中。

这是我得到的输出:“我得到此输出的初始价格数组$ 30.00,$ 20.00,$ 40.00”

我的问题是如何从数组中删除$符号并仅存储数字?像这样 初始价格= [20、30、40]?

var initialprices = document.getElementsByClassName("price");
var initialprice = [];
flag = false;
//for every element in initialprices array get their value from innerhtml
for (var i = 0; i < initialprices.length; i++) {
  initialprice.push(initialprices[i].innerHTML);
  console.log("the initial prices array " + initialprice);
}
<p class ="price">$ 30.00</p>
<p class ="price">$ 20.00</p>
<p class ="price">$ 40.00</p>

3 个答案:

答案 0 :(得分:3)

使用replace,然后将其转换为带有一进制加号的数字。 Array.from函数可以将DOM元素映射到这些数字:

var initialprices = Array.from(document.querySelectorAll(".price"),
                               price => +price.textContent.replace("$", ""));
console.log(initialprices);
<p class ="price">$ 30.00</p>
<p class ="price">$ 20.00</p>
<p class ="price">$ 40.00</p>

答案 1 :(得分:1)

将不需要的字符剥离并解析为数字,然后添加到数组中

import withRouter from 'next/router';

const Admin = (page) => (

  <AdminLayout>

  <style global jsx>
  {
    `body {
      background: #eff0f3;
    }`
  }
  </style>
    <div className="jumbotron" style={jumbotron}>

    {(page == "passform") ? (
      <Passform/>
    ) : (
      <h3>Something is wrong :/ . {page}</h3>
    )}

    </div>
  </AdminLayout>
)

export default withRouter(Admin);
var initialprices = document.getElementsByClassName("price");
var initialpriceArray = [];
for (var i = 0; i < initialprices.length; i++) {
  initialpriceArray.push(parseFloat(initialprices[i].innerHTML.replace(/\$\s/g, '')));
}
console.log("initialpriceArray", initialpriceArray);

答案 2 :(得分:0)

在这里,您将价格转换为数字:

var initialprices = document.getElementsByClassName("price");

flag = false;
//for every element in initialprices array get their value from innerhtml
for (var i = 0; i < initialprices.length; i++) {
  initialprice.push(
    parseFloat(initialprices[i].innerHTML.replace("$", ""))
  );
  console.log("the initial prices array " + initialprice);
}