【发布时间】:2013-06-23 14:22:11
【问题描述】:
String.prototype.width = function(font) {
var f = font || '12px arial',
o = $('<div>' + this + '</div>')
.css({'position': 'absolute', 'float': 'left', 'white-space': 'nowrap', 'visibility': 'hidden', 'font': f})
.appendTo($('body')),
w = o.width();
o.remove();
return w;
}
function sortCustomFunction(a, b) {
if (a['text'].width() < b['text'].width())
return -1;
if (a['text'].width() > b['text'].width())
return 1;
// a must be equal to b
return 0;
}
var annoObj = {
'anno' : [
//an paikseis me auta (px to teleutaio na mpei prwto kok) oi mikres metatwpiseis ofeilontai sto padding.
{ "label" : "fifth" , "text" : "This is a sample text another one" , 'color' : 'red' },
{ "label" : "first" , "text" : "This is a sample" , 'color' : 'grey' },
{ "label" : "second" , "text" : "sample" , 'color' : 'green' },
{ "label" : "sixth" , "text" : "This is a sample text another one text one mooooorreee" , 'color' : 'lightgreen' },
{ "label" : "third" , "text" : "another one" , 'color' : 'blue' },
{ "label" : "forth" , "text" : "one mooooorreee" , 'color' : 'purple' }
]
};
console.log(annoObj.anno); //This should print the unsorted array (but it prints the sorted array).
annoObj.anno.sort(sortCustomFunction); //Sort the array
console.log(annoObj.anno); //This should print the sorted (and it does)
我正在执行上述操作,一切正常。 json 对象内的数组按数组的 json 元素中的 'text' 键的宽度值排序。 我注意到console.log 中的这种奇怪行为。我在排序之前和排序之后打印数组,并且在两个打印中它是相同的。它打印排序后的数组。这是为什么呢?
【问题讨论】:
-
我不知道这个命令(javascript 中的新手)。谢谢你。将其发布为我会投票的答案。
-
顺便说一句,你真的应该只得到每个字符串的
.width()一次 - 这是一个相当繁重的计算。 -
@Bergi 感谢您的建议。这是一个更大程序的一部分,我现在正在构建一个演示。定制将在稍后推出。
-
@Bergi 你是对的,我搜索了但我没有使用我猜想的正确词,因为我迷失在建议中。
标签: javascript json google-chrome sorting console