這是我的第一個陣列:
const withSub = [[31, 32, 34, 34], [32, 36], [12], [15, 38]];
這是我的第二個陣列:
const arr = ['f', 'b', 'c', 'd'];
withSub中陣列的個數總是等于arr陣列的個數,而withSub中子陣列的個數可能不同。
我想創建一個函式,該函式基于這兩個陣列生成一個新陣列,使得 arr 中每個元素的數量必須等于 withArr 中的子陣列數量。
在這個例子中,最終的陣列必須是:
['f', 'f', 'f', 'f', 'b', 'b', 'c', 'd', 'd'];
uj5u.com熱心網友回復:
如果我正確理解了您的問題,您可以.flatMap()在withSub陣列上使用將每個子陣列中的每個數字映射到arr. 您可以通過從 flatMap 回呼中獲取子陣列的索引來做到這一點,然后arr在映射子陣列時使用它來獲取字母。
請參閱下面的示例:
const withSub = [[31, 32, 34, 34], [32, 36], [12], [15, 38]];
const arr = ['f', 'b', 'c', 'd'];
const res = withSub.flatMap((subArr, i) => subArr.map(() => arr[i]));
console.log(res);
uj5u.com熱心網友回復:
您可以按照以下代碼執行某些操作:
const generate = (numbers, letters) => {
return numbers.map((nums, i) => {
return nums.map(num => letters[i])
}).flat()
}
然后與generate(withSub, arr).
uj5u.com熱心網友回復:
您可以使用forEach()andspread運算子進行處理。
forEach() 類似于具有細微差別的 forloop。
const awesomeFunction = (withSub , arr) => {
let ans = [];
arr.forEach( (x,index) => {
let newArr = new Array(withSub[index].length).fill(x);
ans = [...ans , ...newArr];
});
return ans; };
const withSub = [[31, 32, 34, 34], [32, 36], [12], [15, 38]];
const arr = ['f', 'b', 'c', 'd'];
console.log(awesomeFunction(withSub,arr));
uj5u.com熱心網友回復:
使用帶有 map 和 reduce 的函式
const processArr = (arr, withSub) => {
return arr.reduce((acc, el, index) => {
return [...acc, ...withSub[index].map(sub => el)];
}, []);
}
uj5u.com熱心網友回復:
你應該試試這個。
const withSub = [[31, 32, 34, 34], [32, 36], [12], [15, 38]];
const arr = ['f', 'b', 'c', 'd'];
var res = [];
for(var i = 0; i < withSub.length; i ){
for(var j = 0; j < withSub[i].length; j ){
res.push(arr[i]);
}
}
console.log(res)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/386278.html
標籤:javascript 数组 功能
下一篇:如何獲取陣列中的重復物件?
