/* 模式:e,b,c,d,i,f,g,h,o,j,k,l,m,n,u,p,q,r,s,t,a,v,w, x,y,z
我想根據我給定的模式按每個單詞的第二個字母對 arr 中的單詞進行排序。
['aobcdh','aiabch','obijkl']
#輸出應該是:obijkl aiabch aobcdh */
// 我試過這樣:
let pattern = ['e', 'b', 'c', 'd', 'i', 'f', 'g', 'h', 'o', 'j', 'k', 'l', 'm', 'n', 'u', 'p', 'q', 'r', 's', 't', 'a', 'v', 'w', 'x', 'y', 'z']
let arr = ['aiabch', 'aobcdh', 'obijkl', 'apcsdef', 'leeeeeeeeeeeeeeee']
let refArr = []
for (let i = 0; i < arr.length; i ) {
for (let j = 0; j < pattern.length; j ) {
if (pattern[j] === arr[i][1]) {
refArr.push(j)
}
}
}
console.log(refArr)
// 現在下一步是什么?
uj5u.com熱心網友回復:
您可以使用sort 方法和indexOf 函式
let pattern = ['e', 'b', 'c', 'd', 'i', 'f', 'g', 'h', 'o', 'j', 'k', 'l', 'm', 'n', 'u', 'p', 'q', 'r', 's', 't', 'a', 'v', 'w', 'x', 'y', 'z']
let arr = ['aiabch', 'aobcdh', 'obijkl', 'apcsdef', 'leeeeeeeeeeeeeeee']
const newArr = arr.sort((a, b) => pattern.indexOf(a[1]) - pattern.indexOf(b[1]))
console.log(newArr)
uj5u.com熱心網友回復:
此外,如果您不知道 Array 方法,也可以嘗試一下。
let pattern = ['e', 'b', 'c', 'd', 'i', 'f', 'g', 'h', 'o', 'j', 'k', 'l', 'm', 'n', 'u', 'p', 'q', 'r', 's', 't', 'a', 'v', 'w', 'x', 'y', 'z'], arr = ['aiabch', 'aobcdh', 'obijkl', 'apcsdef', 'leeeeeeeeeeeeeeee'], refArr = []
arr.forEach(a => pattern.includes(a[2]) ? refArr.push(a) : null)
console.log(refArr)
uj5u.com熱心網友回復:
您可以使用訂單值生成一個物件并按此值排序。
如有必要,將鍵轉換為小寫和/或采用默認值將未知字母排序到前面或結尾。
const
pattern = 'ebcdifghojklmnupqrstavwxyz',
array = ['aobcdh', 'aiabch', 'obijkl'],
order = Object.fromEntries(Array.from(pattern, (l, i) => [l, i 1]));
array.sort((a, b) => order[a[1]] - order[b[1]]);
console.log(array);
uj5u.com熱心網友回復:
您必須反轉您的交叉回圈:
for(let i = 0; i < pattern.length; i) {
for(let j = 0; j < arr.length; j) {
if(pattern[i] === arr[j][1]) refArr.push(arr[j]);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/476439.html
標籤:javascript
