在javascript中将文本字段切换为100个字符

时间:2015-10-16 03:31:56

标签: javascript node.js

我有一个对象的数组(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;                    
        })

4 个答案:

答案 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已包含修改后的版本,因此无需返回或创建新变量。