JavaScript:尝试获取字符的宽度并进行比较

时间:2015-09-15 19:45:48

标签: javascript

我试图在javascript中比较对象数组中的字符宽度。我想在将对象相互比较之后创建一个只有最大宽度的新数组。我的数组看起来像这样。所以例如佣金是0.00美元,但是下一个对象的佣金可能是200.12美元(比第一个对象的长度大),因此我想在我的新数组中存储它的宽度(佣金只是一个例子,我试图为所有领域实现它)

[![在此处输入图片说明] [1]] [1] [![在此处输入图像说明] [2]] [2]

我对如何处理这个问题感到困惑。我开始创建一个名为GetWidth的函数并返回数组中的第一个对象,现在我对如何获得角色的宽度然后转到下一个对象感到困惑。任何想法都会有帮助。谢谢

private GetWidth() {

    var check = this.data;
    var result = [];

   for (var i = 0; i <= check.length; i++) {
        result = check[i];

    }

}

2 个答案:

答案 0 :(得分:0)

您需要将角色添加到DOM中的范围并检查该范围的offsetWidth。你不能原生地获得字符宽度。

function widthOf(char) {
  var span = document.getElement('span');

  document.body.appendChild(span);

  var width = span.offsetWidth;

  document.body.removeChild(span);

  return width;
}

当然,这也取决于字符大小和字体粗细。

答案 1 :(得分:0)

我会做这样的事情:(查看评论,它解释每个部分的作用)

function getTopCommission() {
    var check = this.data;

    // changes Commissions from STRING to NUMBER
    for (var i = 0; i < check.length; i++) {
        check[i].Commissions = parseFloat(check[i].Commissions.replace(/\$/g, ''));
    }

    //sorts objects from highest to smallest
    var res = check.sort(function (a, b) {
        return a.Commissions < b.Commissions
    });

    //gets size of object
    var size = 0;
    for (key in res[0]) {
        if (res[0].hasOwnProperty(key)) size++;
    }

    //sets results
    var final = {
        obj: res[0],
        length: size
    };

    console.log(final);
}