<!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>