<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
var str = "我国农业发展从追求农民产量转向生产发展与生态保护并重推动绿色生产方式落地生根 河南省唐河县黑龙镇大朱庄村,农民将小麦秸秆装车。唐河县形成“企业田间免费拾捡+我国农业发展从追求农民产量转向生产发展与生态保护并重推动绿色生产方式落地生根 河南省唐河县黑龙镇大朱庄村,农民将小麦秸秆装车。唐河县形成“企业田间免费拾捡+";
var newStr = ""; //字符串中截取后拼接成的新字符串
var keys = ["农民","免费","黑龙","生"]; //关键字
var keysArr = []; //字符串中截取的关键字数组
for(var i=0;i<str.length;i++){
var indexArr = []; //关键字索引数组 -- 关键字所在字符串的索引
// 遍历关键字数组,分别获取他们在字符串中的位置(也就是索引)
for (var j=0;j<keys.length;j++) {
var index = str.indexOf(keys[j]);
if(index != -1){
indexArr.push(index); //不等于 -1 即存在该关键字,保存到关键字索引数组中
}
}
// 如果关键字索引数组有值,则说明字符串中还存在关键字内容
if(indexArr.length > 0){
indexObj = getMin(indexArr); //调用获取最小值函数
var minEle = indexObj.minEle; //最小值(对应的是字符串的索引)
var minIndex = indexObj.minIndex; //最小值对应的索引(对应的是关键字数组的索引)
keysArr.push(str.substring(minEle - 2, minEle + keys[minIndex].length+2)); //截取所在索引的前两位,及后两位
str = str.slice(minEle + keys[minIndex].length);
i--;
}
}
newStr = "..."+keysArr.join("...")+"...";
console.log(newStr);
/**
* 获取数组中的最小值和对应的索引
* @param {Object} arr
*/
function getMin(arr){
var minEle = Math.max.apply(Math, arr); //默认给该数组的最大值
var minIndex = 0;
for (var i=0;i<arr.length;i++) {
//如果当前元素的值比前面保存的值小,就替换,否则不改变
if(arr[i] < minEle){
minEle = arr[i];
minIndex = i;
}
}
return {
minEle : minEle,
minIndex : minIndex
}
}
</script>
</body>
</html>