前端練習07 按下標插入

2021-09-01 23:26:54 字數 1811 閱讀 3793

失望

現在有乙個陣列存放字串資料:

const items = ['item1', 'item2', 'item3', 'item4', 'item5']
有另外乙個陣列存放一組物件:

const sections = [

, ]

它每個物件表示的是會往原來的陣列的index座標插入content資料(index不會重複):

0      1      2      3      4

item1 itme2 item3 item4 item5

^ ^

| |

section1 section2

最後結果是:['section1', 'item1', 'item2', 'section2', 'item3', 'item4', 'item5']

請你完成injectsections函式,可以達到上述的功能

injectsections(

['item1', 'item2', 'item3', 'item4', 'item5'],

[ ,

]) // => ['section1', 'item1', 'item2', 'section2', 'item3', 'item4', 'item5']

我他媽就是個傻子。

上來直接往裡插入,遍歷sections然後插入,難道就不知道插入完了之後原來的items陣列順序就變了?

二逼乙個

兩個思路

第乙個思路,從前往後插入的時候,後面的下標會發生變化,那就反過來插入,從後往前插入就不會受到影響了

所以,現在的關鍵點就是將sections按照index排序

眼熟嗎

sections.sort((a, b) => b.index - a.index)
然後就沒什麼難度了

const injectsections = (items, sections) => 

const temp = [...items];

[...sections].sort((a, b) = > (b.index - a.index)).foreach(section = > );

return temp

};

思路2

第二個思路,直接向陣列中插入資料會影響下標,那麼我把陣列中的每一項都變成陣列,在想內層陣列插入資料就沒問題了,最後在展平就行了

現在的關鍵的就是展平二維陣列

學到了乙個方法,拼接陣列cancat的用法

.concat(arr1, arr2)
我們要展平的資料是:

const a = [[a], [b]]
直接呼叫不行,可以使用下面這種形式,將陣列傳進去:

或者用解構的形式傳入引數:

.concat(...temp)
好了,接下來又沒難度了

const injectsections2 = (items, sections) => );

return .concat(...temp)

};

習題練習07

實現 int sqrt int x 函式。計算並返回 x 的平方根,其中 x 是非負整數。由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。示例 1 輸入 4 輸出 2 示例 2 輸入 8 輸出 2 說明 8 的平方根是 2.82842 由於返回型別是整數,小數部分將被捨去。param x...

寒假練習 07

斷斷續續終於刷完了計算幾何專題,感覺太麻煩,小錯誤不斷,尤其是精度問題。還有輸出問題,有時候printf比cout要方便。給出正方形的一組對角座標,求另外兩個座標,用三角函式推到公式。不妨設兩點為a x1,y1 c x2,y2 則中點為g x1 x2 2,y1 y2 2 對角線長度為l sqrt x...

前端學習日記07

常用表單標籤 1 form 表單標籤 表單標籤定義乙個包含表單元素的區域 用於收集使用者輸入的不同型別的資料 常見的表單型別 文字域 下拉列表 單選框 核取方塊 2 input標籤 表單元素就是指不同型別的input元素,input標籤根據不同的type屬性,有很多形態。文字輸入 定義文字輸入的單行...