我试图在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];
}
}
答案 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);
}