JavaScript文字列を重くする方法

3386 ワード

文字列の削除
面接で文字列の重さが問われましたが、頭が少し空きました.まとめてみます.
1.二層for循環ネスト
新しい文字列、二重循環、外層循環元文字列、内層循環の新しい文字列を作成し、フラグビット記録元文字列と新しい文字列の要素が等しいかどうかを設定します.そうでなければ、要素を新しい文字列に追加します.
function removeRepeatStr(str){
    var newStr = '';
    var flag;
    var len = str.length;
    for(var i=0; i
2.indexOfを使用する()
第一の方法に基づいて,インナーサイクルの代わりにindexof()を使用する.
function removeRepeatStr (str) {
  var newStr = '';
  var len = str.length;
  for (var i = 0; i < len; i++) {
    if (newStr.indexOf(str[i]) == -1) {
      newStr = newStr + str[i];
    }
  }
  return newStr;
}
var str = 'bilibililalala'
console.log(removeRepeatStr(str)) 
3.search方法
search()メソッドは、文字列で指定されたサブ文字列を検索したり、正規表現と一致するサブ文字列を検索します.
function removeRepeatStr (str) {
  var newStr = '';
  var len = str.length;
  for (var i = 0; i < len; i++) {
    if (newStr.search(str[i]) == -1) {
      newStr = newStr + str[i];
    }
  }
  return newStr;
}
var str = 'bilibililalala'
console.log(removeRepeatStr(str)) 
4.利用対象属性
文字列の要素が巡回して現れたら、オブジェクトの対応する属性値を1に設定します.これは繰り返されません.しかもこのような時間の複雑さはO(n)です.
function removeRepeatStr (str) {
  var obj = {};
  var newStr = "";
  for (var i = 0; i < str.length; i++) {
    if (!obj[str[i]]) {
      newStr += str[i];
      obj[str[i]] = 1;
    }
  }
  return newStr;
}
var str = 'bilibililalala'
console.log(removeRepeatStr(str)) 
5.サブ記号列を再配列して、配列の重さに変換します.
配列
1.2層のforは入れ子に循環し、その後spliceは元に戻ります.
二層循環、外層循環配列要素、内層循環比較値、値を同時に削除します.
function unique (arr) {
  for (let i = 0; i < arr.length; i++) {
    for (let j = i + 1; j < arr.length; j++) {
      if (arr[i] === arr[j]) {
        arr.splice(j, 1)
        j--
      }
    }
  }
  return arr
}
var arr = [1, 2, 3, 1, 4, 5, 2, 6]
console.log(unique(arr))
2.indexOf()を利用して重さを取る【またはincludes()を使うのも同じです.】
新しい配列、外層循環配列要素、内層循環の新しい配列はindexof()で置換されます.
function unique (arr) {
  var array = []
  for (let i = 0; i < arr.length; i++) {
    if (array.indexOf(arr[i]) == -1) {
      array.push(arr[i])
    }
  }
  return array
}
var arr = [1, 2, 3, 1, 4, 5, 2, 6]
console.log(unique(arr))
3.ソート()の方法で重さを取る
ソト順序を利用して、順序付け後の結果に基づいて巡回と隣接元素比率を行います.
function unique (arr) {
  arr.sort()
  var array = [arr[0]]
  for (let i = 1; i < arr.length; i++) {
    if (arr[i] != arr[i - 1]) {
      array.push(arr[i])
    }
  }
  return array
}
var arr = [1, 2, 3, 1, 4, 5, 2, 6]
console.log(unique(arr))
4.filter()の方法で重い
indexOf(search value、froomindex)search value:必要です.検索する文字列の値を指定します.froomindex:任意の整数パラメータです.文字列で検索を開始する位置を指定します.
function unique (arr) {
  return arr.filter((item, index, arr) => {
    return arr.indexOf(item, 0) === index
  })
}
var arr = [1, 2, 3, 1, 4, 5, 2, 6]
console.log(unique(arr))
5.ES 6のセットを利用して重さを取る
var arr = [1, 2, 3, 1, 4, 5, 2, 6]
console.log([...new Set(arr)])
6.利用対象属性
時間の複雑さはO(n)である.
function unique (arr) {
  let obj = {};
  arr.forEach((item) => {
    obj[item] = '';
  })

  return Object.keys(obj)
}
var arr = [1, 2, 3, 1, 4, 5, 2, 6]
console.log(unique1(arr))