我有一个对象的数组(foo),每个对象都有一个名为" text"其中一些是非常长的文本;所以我想要限制100个文字的字符;你会采用相同的方法在javascript中削减100个字符吗?我相信有更好的方法可以做到这一点......或者如果它已经干净了,请你确认一下吗?感谢
results = foo.map(function(obj){
if(obj['text'] && obj['text'].length >100){
obj['text'] = obj['text'].substr(0,97)+"...";
}
return obj;
})
答案 0 :(得分:1)
使用省略号而不是删除文本。
查看CSS text-overflow in a table cell?您的问题
创建一个类
.myellipsis {
text-overflow:ellipsis;
}
应用此类会将溢出的文本替换为“...”
答案 1 :(得分:0)
在您的示例代码中,正在修改Route::get("mobile/auth/login", function(){
echo ("Debug"); exit;
});
数组中对象的text
属性。下面的代码假定您这样做:
foo
所以,只有一个改变才能使其成为惯用语:使用foo.forEach(function(obj) {
if (obj['text'] && obj['text'].length > 100) {
obj['text'] = obj['text'].substr(0, 97) + '...';
}
});
代替forEach
答案 2 :(得分:-1)
您可以使用substring
if (data.length > 100) {
// truncate string
datacut = data.substring( 0, 50);
}
答案 3 :(得分:-1)
您可以使用正则表达式:
var foo = [
{'text': 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab'}, // length 101
{'text': 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'}, // length 100
{'blah': 'a'}
]
var re = /(.{97}).{4,}/;
foo.map(function(obj) {
obj['text'] && (obj['text'] = obj['text'].replace(re, '$1...'));
})
foo
> foo
[ { text: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...' },
{ text: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' },
{ blah: 'a' } ]
此外,由于您正在替换obj [' text'],因此foo已包含修改后的版本,因此无需返回或创建新变量。