這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 前言 最近剛剛學習了Echarts的使用,於是想做一個小案例來鞏固一下。項目效果如下圖所示: 話不多說,開始進入實戰。 創建項目 這裡我們使用vue-cli來創建腳手架: vue create app 這裡的app是你要創建的項目的名稱, ...
數組
方法 | 參數 | 操作 | 返回值 | 時間複雜度 | 空間複雜度 |
---|---|---|---|---|---|
push() | 一個或多個元素 | 在數組末尾添加一個或多個元素,並返回新數組的長度 | 新數組的長度 | O(1) | O(1) |
pop() | 無 | 移除並返回數組的最後一個元素 | 被移除的元素 | O(1) | O(1) |
unshift() | 一個或多個元素 | 在數組開頭添加一個或多個元素,並返回新數組的長度 | 新數組的長度 | O(n) | O(n) |
shift() | 無 | 移除並返回數組的第一個元素 | 被移除的元素 | O(n) | O(n) |
concat() | 一個或多個數組 | 創建一個新數組,包含原數組和指定的數組 | 合併後的新數組 | O(n) | O(n) |
slice() | 起始索引和結束索引(可選) | 從原數組中返回選定的元素,生成一個新數組 | 選定的元素組成的新數組 | O(k) | O(k) |
splice() | 起始索引、要刪除的元素個數和要添加的元素(可選) | 在指定位置修改數組,刪除/添加元素 | 被刪除的元素組成的新數組 | O(n) | O(n) |
indexOf() | 要查找的元素和起始搜索位置(可選) | 返回指定元素在數組中首次出現的位置,如果不存在則返回-1 | 元素的索引或-1 | O(n) | O(1) |
lastIndexOf() | 要查找的元素和起始搜索位置(可選) | 返回指定元素在數組中最後一次出現的位置,如果不存在則返回-1 | 元素的索引或-1 | O(n) | O(1) |
includes() | 要查找的元素和起始搜索位置(可選) | 判斷數組是否包含指定元素 | 布爾值 | O(n) | O(1) |
join() | 連接符(可選) | 將數組中的所有元素連接成一個字元串 | 連接後的字元串 | O(n) | O(n) |
reverse() | 無 | 顛倒數組中元素的順序 | 顛倒順序後的數組 | O(n) | O(1) |
sort() | 排序比較函數(可選) | 對數組元素進行排序,預設按照字母順序排序 | 排序後的數組 | O(n log(n)) | O(log(n)) |
filter() | 篩選條件函數 | 根據指定條件過濾數組中的元素,返回滿足條件的新數組 | 滿足條件的新數組 | O(n) | O(n) |
map() | 轉換函數 | 遍曆數組,對每個元素執行指定操作,並返回新數組 | 轉換後的新數組 | O(n) | O(n) |
forEach() | 遍歷函數 | 遍曆數組,對每個元素執行指定操作,沒有返回值 | 無 | O(n) | O(1) |
reduce() | 累積函數和初始值(可選) | 對數組中的元素執行累積操作,返回一個值 | 累積結果 | O(n) | O(1) |
find() | 篩選條件函數 | 返回數組中滿足條件的第一個元素,如果不存在則返回undefined | 第一個滿足條件的元素 | O(n) | O(1) |
findIndex() | 篩選條件函數 | 返回數組中滿足條件的第一個元素的索引,如果不存在則返回-1 | 第一個滿足條件的索引 | O(n) | O(1) |
some() | 篩選條件函數 | 檢測數組中是否至少有一個元素滿足指定條件 | 布爾值 | O(n) | O(1) |
every() | 篩選條件函數 | 檢測數組中是否所有元素都滿足指定條件 | 布爾值 | O(n) | O(1) |
示例:
- push():
function push(arr, ...elements) {
for (let i = 0; i < elements.length; i++) {
arr[arr.length] = elements[i];
}
return arr.length;
}
- pop():
function pop(arr) {
if (arr.length === 0) {
return undefined;
}
const lastElement = arr[arr.length - 1];
arr.length--;
return lastElement;
}
- unshift():
function unshift(arr, ...elements) {
for (let i = arr.length - 1; i >= 0; i--) {
arr[i + elements.length] = arr[i];
}
for (let i = 0; i < elements.length; i++) {
arr[i] = elements[i];
}
return arr.length;
}
- shift():
function shift(arr) {
if (arr.length === 0) {
return undefined;
}
const firstElement = arr[0];
for (let i = 1; i < arr.length; i++) {
arr[i - 1] = arr[i];
}
arr.length--;
return firstElement;
}
對象
方法 | 參數 | 操作 | 返回值 | 時間複雜度 | 空間複雜度 |
---|---|---|---|---|---|
Object.keys() | 對象 | 返回一個包含對象所有可枚舉屬性的鍵的數組 | 包含對象鍵的數組 | O(n) | O(n) |
Object.values() | 對象 | 返回一個包含對象所有可枚舉屬性的值的數組 | 包含對象值的數組 | O(n) | O(n) |
Object.entries() | 對象 | 返回一個包含對象所有可枚舉屬性鍵值對的數組 | 包含對象鍵值對的數組 | O(n) | O(n) |
Object.assign() | 目標對象和一個或多個源對象 | 將一個或多個源對象的屬性複製到目標對象,並返回目標對象 | 目標對象 | O(m) | O(1) |
Object.freeze() | 對象 | 凍結對象,使其屬性不可修改 | 凍結後的對象 | O(n) | O(1) |
Object.seal() | 對象 | 封閉對象,使其屬性不可添加或刪除,但可以修改 | 封閉後的對象 | O(n) | O(1) |
Object.create() | 原型對象和可選的屬性描述符對象 | 創建一個新對象,使用指定的原型對象和屬性描述符對象 | 新創建的對象 | O(1) | O(1) |
Object.getPrototypeOf() | 對象 | 返回指定對象的原型對象 | 對象的原型 | O(1) | O(1) |
Object.hasOwnProperty() | 對象和屬性名 | 判斷對象自身是否具有指定的屬性 | 布爾值 | O(1) | O(1) |
Object.is() | 兩個值 | 比較兩個值是否嚴格相等 | 布爾值 | O(1) | O(1) |
示例:
- Object.keys():
function keys(obj) {
const result = [];
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
result.push(key);
}
}
return result;
}
- Object.values():
function values(obj) {
const result = [];
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
result.push(obj[key]);
}
}
return result;
}
- Object.entries():
function entries(obj) {
const result = [];
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
result.push([key, obj[key]]);
}
}
return result;
}
- Object.assign():
function assign(target, ...sources) {
for (let i = 0; i < sources.length; i++) {
const source = sources[i];
for (let key in source) {
if (source.hasOwnProperty(key)) {
target[key] = source[key];
}
}
}
return target;
}
字元串
方法 | 參數 | 操作 | 返回值 | 時間複雜度 | 空間複雜度 |
---|---|---|---|---|---|
length | 無 | 返回字元串的長度 | 字元串長度 | O(1) | O(1) |
concat() | 一個或多個字元串或值 | 連接多個字元串或值,並返回新的字元串 | 新字元串 | O(n) | O(n) |
indexOf() | 要查找的字元串和起始搜索位置(可選) | 返回指定字元串在源字元串中首次出現的位置,如果不存在則返回-1 | 字元串的索引或-1 | O(n) | O(1) |
lastIndexOf() | 要查找的字元串和起始搜索位置(可選) | 返回指定字元串在源字元串中最後一次出現的位置,如果不存在則返回-1 | 字元串的索引或-1 | O(n) | O(1) |
includes() | 要查找的字元串和起始搜索位置(可選) | 檢測源字元串是否包含指定字元串 | 布爾值 | O(n) | O(1) |
slice() | 起始索引和結束索引(可選) | 提取源字元串中指定範圍的字元並返回一個新字元串 | 選定的子字元串 | O(k) | O(k) |
substring() | 起始索引和結束索引(可選) | 提取源字元串中指定範圍的字元並返回一個新字元串,與slice()類似但不支持負索引 | 選定的子字元串 | O(k) | O(k) |
substr() | 起始索引和長度(可選) | 提取源字元串中從指定索引開始的指定長度字元並返回一個新字元串 | 選定的子字元串 | O(k) | O(k) |
replace() | 要替換的字元串和替換的新字元串 | 替換源字元串中的指定子字元串為新的字元串 | 替換後的新字元串 | O(n) | O(n) |
trim() | 無 | 去除源字元串兩端的空格和空白字元 | 去除兩端空白的字元串 | O(n) | O(n) |
toUpperCase() | 無 | 將源字元串中的所有字元轉換為大寫 | 大寫的字元串 | O(n) | O(n) |
toLowerCase() | 無 | 將源字元串中的所有字元轉換為小寫 | 小寫的字元串 | O(n) | O(n) |
split() | 分隔符和可選的分割次數(可選) | 將源字元串按照指定的分隔符進行分割,並返回一個字元串數組 | 分割後的字元串數組 | O(n) | O(n) |
示例:
- length:
function getLength(str) {
let count = 0;
for (let i = 0; i < str.length; i++) {
count++;
}
return count;
}
- concat():
function concat(str1, str2) {
return str1 + str2;
}
- indexOf():
function indexOf(str, searchValue, startIndex = 0) {
for (let i = startIndex; i < str.length; i++) {
if (str.slice(i, i + searchValue.length) === searchValue) {
return i;
}
}
return -1;
}
- lastIndexOf():
function lastIndexOf(str, searchValue, startIndex = str.length - 1) {
for (let i = startIndex; i >= 0; i--) {
if (str.slice(i, i + searchValue.length) === searchValue) {
return i;
}
}
return -1;
}
- includes():
function includes(str, searchValue) {
return str.indexOf(searchValue) !== -1;
}
- slice():
function slice(str, start, end) {
let result = '';
const length = str.length;
if (start < 0) {
start = Math.max(length + start, 0);
} else {
start = Math.min(start, length);
}
if (end === undefined) {
end = length;
} else if (end < 0) {
end = Math.max(length + end, 0);
} else {
end = Math.min(end, length);
}
for (let i = start; i < end; i++) {
result += str[i];
}
return result;
}
- replace():
function replace(str, searchValue, replaceValue) {
return str.split(searchValue).join(replaceValue);
}
- trim():
function trim(str) {
return str.replace(/^\s+|\s+$/g, '');
}
- toUpperCase():
function toUpperCase(str) {
let result = '';
for (let i = 0; i < str.length; i++) {
const charCode = str.charCodeAt(i);
if (charCode >= 97 && charCode <= 122) {
result += String.fromCharCode(charCode - 32);
} else {
result += str[i];
}
}
return result;
}
- toLowerCase():
function toLowerCase(str) {
let result = '';
for (let i = 0; i < str.length; i++) {
const charCode = str.charCodeAt(i);
if (charCode >= 65 && charCode <= 90) {
result += String.fromCharCode(charCode + 32);
} else {
result += str[i];
}
}
return result;
}
- split():
function split(str, separator, limit) {
const result = [];
let start = 0;
let count = 0;
for (let i = 0; i < str.length; i++) {
if (separator === '') {
result.push(str[i]);
count++;
} else if (str.slice(i, i + separator.length) === separator) {
result.push(str.slice(start, i));
start = i + separator.length;
count++;
if (limit && count >= limit) {
break;
}
}
}
result.push(str.slice(start));
return result;
}