Javascript 继续分割数组,直到每个项都是1
我想用这个myArr[2,3,5,7]划分一个给定的数组cm(arr),并将这些值存储在另一个数组(finalArr)中,我想继续迭代,直到newArr项为1Javascript 继续分割数组,直到每个项都是1,javascript,Javascript,我想用这个myArr[2,3,5,7]划分一个给定的数组cm(arr),并将这些值存储在另一个数组(finalArr)中,我想继续迭代,直到newArr项为1 function cm(arr){ let divide = [2,3,5,7]; let finalArr = []; let newArr = arr.map(function(e){ for(let i = 0; i < divide.length; i++){ if(parseInt(e/d
function cm(arr){
let divide = [2,3,5,7];
let finalArr = [];
let newArr = arr.map(function(e){
for(let i = 0; i < divide.length; i++){
if(parseInt(e/divide[i]) === e/divide[i]){
finalArr.push(divide[i])
return e/divide[i];
}
}
});
let newFinal = new Set(finalArr)
console.log([...newFinal])
console.log(newArr)
}
您可以进行一个循环,检查数组是否包含所有的元素。这种方法适用于具有最多10个循环的无限循环的回退
函数cm(数组){
常数除法=[2,3,5,7];
设i=10;
而(i--&&!array.every(v=>v==1)){
常数因子=[];
array=array.map(v=>{
常数d=divide.find(d=>!(v%d));
如果(d==未定义)返回v;
如果(!factors.包括(d))factors.push(d);
返回v/d;
});
console.log('factors',…factors)
console.log('值',…数组)
}
}
厘米([2,3,4,5,6])
如果所需的输出都是1s,那么为什么不立即输出呢?因为我想将最终数组中的所有数字相乘,以获得第一个数组cm(arr)的公倍数,这可能是问题中的一个基本信息:您想要得到公倍数。请注意,这是一个已经写了很多次的算法。你可以很容易地找到它。我实际上想创建我自己的解决方案,所以我没有搜索实际的答案,而是想实现我脑海中的想法,但我认为我的方法并不总是一个好方法,因为这不会在更大的数量上起作用。非常感谢你,我可以将因子推到一个新的数组中,并得到公共倍数
cm([2,3,4,5,6])
[ 2, 3, 5 ] // the number that we divided each arr[item] with
[ 1, 1, 2, 1, 3 ] // the output of arr[item]/divide[item]
//desired output
[2,3,5,2,3] // keep dividing arr[item] with divide[item] until the second array had all items = 1
[1,1,1,1,1]
function cm(arr) {
let divide = [2, 3, 5, 7];
return arr.map((item, i) => {
let newItem = item;
let divideItem = i in divide ? divide[i] : newItem;
while (newItem > 1) {
newItem /= divideItem;
//one step for division
}
newItem = Math.ceil(newItem);
return newItem;
});
}