㈠ 【前端面試題】考查數組對象方法和字元串對象方法
1. 翻轉字元串 :定義一個翻轉字元串的函數reverseString(). 要求:把字元串轉化成數組,再藉助數組的reverse方法翻轉數組順序,最後把數組轉化成字元串.你的結果必須得是一個字元串.例: reverseString("Heya") //ayeH
2. 計算階乘 :定義一個階乘函數factorialize(num).要求:能夠計算其階乘.
3. 判斷迴文 :如果給定的字元串是迴文,返回true,反之,返回false。註:如果一個字元串忽略標點符號、大小寫和空格,正著讀和反著讀一升塵冊模一樣,那麼這個字元串就是迴文。
4. 找到最長的單詞 :找到提供的句子中的最長的單詞,然後返回該單詞的長度(函數的返回值應該是一個數值)
5. 首字母大寫 : 確保字元串的每個單詞首字母都大寫,其餘部分小寫。像'the'和'of'這樣的連接符同理。
6. 拔尖 :在已知包含了4個小數組的大數組中,分別找到每個小數組中的最大值,然後把它們串聯起來,形成一個新數組。
7. 重復字元串 :重復一個指定的字元串 num 次. 例如: repeat("*", 3) 應該返回 "***" .
8. 截斷字元串 :如果字元串的長度比指定的參數 num 長,則把多餘的部分用 ... 來表示。切記,插入到字元串尾部的三個點號也會計入字元串的長度。但是,如果指定的參數 num 小於或等於3,則添加的三個點號不會計入字元串的長度。
9. 切割數組 :把一個數組arr按照指定的數組大小size分割成若干個數組塊。例如: chunk([1,2,3,4],2)=[[1,2],[3,4]] ; chunk([1,2,3,4,5],2)=[[1,2],[3,4],[5]] ;
10. 截斷數組 : 返回一個數組被截斷n個元素後兄首還剩餘的元素,截斷從索引0開始。
11 找兒子 :如果數吵宏組第一個字元串元素包含了第二個字元串元素的所有字元,函數返回true。例: ["hello", "Hello"] 應該返回 true ,因為在忽略大小寫的情況下,第二個字元串的所有字元都可以在第一個字元串找到. ["hello", "hey"] 應該返回 false ,因為字元串"hello"並不包含字元"y"。 ["Alien", "line"] 應該返回 true ,因為"line"中所有字元都可以在"Alien"找到。
12. 刪除假值 :刪除數組中的所有假值. 在JavaScript中,假值有 false 、 null 、 0 、 "" 、 undefined 和 NaN 。
13. 檢查字元串結尾 :檢查一個字元串 (str) 是否以指定的字元串 (target) 結尾.如果是,返回true;如果不是,返回false。
14. 摧毀函數 :實現一個摧毀(destroyer)函數,第一個參數是待摧毀的數組,其餘的參數是待摧毀的值。
15. 插入數字並找位置 :先給數組排序,然後找到指定的值在數組的位置,最後返回位置對應的索引。
舉例: where([1,2,3,4], 1.5) 應該返回 1 。因為 1.5 插入到數組 [1,2,3,4] 後變成 [1,1.5,2,3,4] ,而 1.5 對應的索引值就是 1 。
同理, where([20,3,5], 19) 應該返回 2 。因為 19 插入到數組 [3,5,20] 後變成 [3,5,19,20] ,而 19 對應的索引值就是 2 。
16. 凱撒密碼 :下面我們來介紹風靡全球的凱撒密碼Caesar ciphe,又叫移位密碼。移位密碼也就是密碼中的字母會按照指定的數量來做移位。一個常見的案例就是ROT13密碼,字母會移位13個位置。由'A' ↔ 'N', 'B' ↔ 'O',以此類推。要求:寫一個ROT13函數,實現輸入加密字元串,輸出解密字元串。所有的字母都是大寫,不要轉化任何非字母形式的字元(例如:空格,標點符號),遇到這些特殊字元,跳過它們。
㈡ 前端如何給數組元素按降序排序
眾所周知, sort 方法默認是為字元串排序的,
結果為
如果想要降序該怎麼做呢,這時候你要用到字元串的 localeCompare 方法
結果為
不知道你是否會在 b.localeCompare(a)) 還是 a.localeCompare(b)) 上糾結,所幸,可供的選擇不多,死記硬背完全可行,比如
對於數字也是這樣的
對於 sort 方法
看一個冒泡排序的實現
sort 方法只是將 arr[i] > arr[i + 1] 還是 arr[i] < arr[i + 1] 的決定權交給了我們
至於 sort 方法的實現就更加有趣的,並不是簡單的快排,會根據數組的長度、遞歸的深度等選擇不同方式,記得之前寫過一篇關於快排的文章 https://www.jianshu.com/p/7186c0b2d23f ,相比之下就要簡陋的多了。
㈢ spring MVC 怎麼獲取前端傳遞的數組參數
ServletRequestUtils 點一下裡面頃大就有獲取參數的 你返乎缺根漏辯據類型選擇接收數組的就ok了
㈣ 前端數組問題,望解答
因為你在比較a==c的時候,a是數組,c是字元串,所以要進行隱式轉換,字元串不可能變成數組,但是任何數據類型都有toString方法,也就是都可以變成字元串兆鍵,所空螞以js引擎默認把a轉換成字元串(其實就是調用a.toString()),得到"1,2,3",這個字元串和c當然是一樣的。注意,==操作符在兩端的運算數都是字元串的時候,比較的是每個字元都一樣,而不是兩個字元串是否在同一地址,這和對象比較斗猜埋不一樣。這也是為什麼a和b看上去兩個一樣的數組,==運算的結果卻是false,它們不是同一個數組。
建議你繼續深入學習一下js中關於==運算符的定義,==和===可能是js中比較迷惑人的地方
㈤ 怎麼把前端傳到後端的數組拆分出來
把前端傳到後端的數組拆分出來的具體步驟。
1、前端將對象數組轉換成字元串後傳遞到後端。
2、後端用字元串接收,注意名稱要與前端ajax的對象數組字元串參數名一致,否則接收不到。
3、最終轉換成List
㈥ 【前端面試:手寫js系列】flat---數組扁平化
數組扁平化定義:在前端項目開發過程中,偶爾會出現層疊數據結構的數組,需要把多層數組轉換為一級數組(即提取嵌套數組元素最終合並為一個數組),使其內容合並並且展開。
遍歷數組的方案:
for循環
for...of
for...in
forEach()
entries()
keys()
values()
rece()
map()
判斷元素是否是數組的方案:
instanceof
constructor
object.prototype.toString.call
isArray
將數組元素進行展開一層的方案:
擴展運演算法 + concat(concat() 方法用於合並兩個或多個數組,在拼接的過程中加上擴展運算符會展開一層數組)
concat + apply(主要是如纖利用 apply 在綁定作用域時,傳入的第二個參數是一個數組或者類數組對象,其中的數組元素將作為單獨的參數傳給 func 函數。也就是在調用 apply 函數的過程中,會將傳入的數組一個一個渣悶仿的傳入到要執行的函數中,也就是相當對數組進行了一層的展開。)
toString + split(不推薦使用 toString + split 方法,因為操作字元串是很危險的事情,如果數組中的元素所有都是數字的話,toString + split 是可行的,並且是一步搞定。)
最終手寫的flat()方法為:
參考博客如下,註明罩頌一下出處,感謝大神們,希望自己可以多多練習,多多回顧:
三元博客
JS數組rece()方法詳解及高級技巧
數組flat方法實現
㈦ 前端面試題:怎麼把一個類數組對象轉化為數組
var students = [];
students[students.length] = new Object();
students[students.length] .name = "戚配Lanny";
students[students.length] .age = "25";
students[students.length] .location = "China"咐仔並;
var json = JSON.stringify(students);
var student = new Object();
student.name = "Lanny"衡跡;
student.age = "25";
student.location = "China";
students = (students || []).push(student);
var json = JSON.stringify(students);
㈧ spring MVC 怎麼獲取前端傳遞的數組參數
spring MVC controller獲取前端傳遞的數組參數的方法是進行封裝json字元串實現的。
1、jsp頁面中的數組創建如下:
var myArray = []; 定義數組myArray
myArray .push("OU=Software,DC=example,DC=com,"); 向數組中添加第一個字元串
myArray .push("OU=IT,DC=example,DC=com,");向數組中添加第二個字元串
轉換json數組:
myArray = JSON.stringify(myArray ); 利用json的stringify方法把js對象轉換成json對象
$("#ADOus").attr("action","${ctx}/ADSetting?myOUsArray ="+ myArray );設置action參數
$("#ADOus").submit();提交action到對應的controller
2、在controller層的處理如下:
@RequestMapping(value = { "/ADSetting" }, method=RequestMethod.POST) 定義url和提交方法,規定post
public String configureOUs(HttpServletRequest request,@RequestParam("myOUsArray ") String[] myOUsArray ){
ObjectMapper mapper = new ObjectMapper(); //創建對象映射對象
String [] array = mapper.readValue(jsonString, String[].class): //從映射域中讀取數組參數,以json 字元串的方式
接下來需要把接收到的參數轉換成json對象來處理。
return 定義的頁面
}
㈨ 前台如何傳數組
在使用SpringMVC時,我們想傳遞數組引用類型,SpringMVC對數組傳遞有些限制:
經過測試:SpringMVC支持一維數組的參數傳遞,不支持多維數組的參數傳遞,如果想傳遞多維數組,那麼我們只好改用其他的辦法如:1、將多維數組拆成一維數組;2、將多維數組改為集合傳遞;3、或者改為字元串,接收時間處理一下等等,4、或者將所有數組中的值拼接傳遞(例如:data=1&data=2&data=3,代表三個數組的值)方法很靈活。
SpringMVC傳遞一維數組:傳遞數組類型時,需要在@requestParam()中添加value,否則會出現HTTP Status 400 - Required long[] parameter 'data' is not present錯誤。
例如: @RequestParam(value = "data[]")long[] data
前端請求:
var dataArr = new Array();
for(var i = 0; i < 10; i++){
dataArr.push(i);
}
$.ajax({
url : "test/arrayParam.shtml",
data : {
"datas" : dataArr
},
dataType : "json",
success : function(data) {
alert(data);
},
async : false
});
}
後端代碼:
package com.pyc.search.view.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping("/arrayParam")
public @ResponseBody
int test1(@RequestParam(value = "datas[]") long[] datas) {
return datas.length;
}
}
2 多維數組可以轉換為一維數組,或者轉換為字元串,在後端接收時處理一下。
㈩ 前端怎麼把數組傳給後端啊
前台核心代碼
var misGroup = new Array();
var srcGroup = new Array();
$.ajax({
type : "POST",
url : "preplan_preplan_savePreplan.action",
dataType : "json",
traditional : true,
data : {
//此處misArray跟後台對應
misArray : misGroup,
//此處srcArray跟後台對應
srcArray : srcGroup
},
success : function() {
}
});