У меня есть этот скрипт в PHP, и я пытаюсь преобразовать его в JavaScript, и у меня есть некоторые проблемы, я провел большую часть разговора, я думаю, но я уверен, что он правильный путь.
Вот код:
var nums = [1,2,3,4];
function getsum(nums,sMinCount){
var arry_point=[];
var temp=[];
var temp_mul=[];
getarrayset(nums,arry_point,sMinCount,temp);
arry_point.forEach( function(data)
{
var k=1;
data.forEach( function(value)
{
k *= value;
});
temp_mul.push(k);
});
const reducer = (accumulator, currentValue) => accumulator + currentValue;
return temp_mul.reduce(reducer);
}
function getarrayset(nums,arry_point,sMinCount,temp)
{
if(nums.length >= sMinCount){
if(nums.length ==1 && sMinCount==1 && !nums.includes(arry_point) ){
arry_point.push(nums);
}
else{
if(nums.length == sMinCount){
sort(nums);
if (!nums.includes(arry_point)) {
arry_point.push(nums);
}
}
for(i=0; i<nums.length; i++){
var copy_array = nums;
delete copy_array[i];
copy_array.sort();
if(copy_array.length >=sMinCount && !copy_array.includes(temp)){
temp.push(copy_array);
getarrayset(copy_array,arry_point,sMinCount,temp);
}
}
}
}
}
console.log(getsum(nums,2));
я получаю ошибку: copy_array.sort (); результат должен быть: 50
код php можно найти https://3v4l.org/uqip5
<?php
$array = [1,2,3,4];
echo (getsum($array,3));
function getsum($array,$size){
$arry_point=array();
$temp=array();
$temp_mul=array();
getarrayset($array,$arry_point,$size,$temp);
foreach ($arry_point as $data) {
$k=1;
foreach ($data as $value) {
$k *= $value;
}
array_push($temp_mul, $k);
}
return array_sum($temp_mul);
}
function getarrayset($array,&$arry_point,$size,&$temp)
{
if(sizeof($array)>=$size){
if(sizeof($array)==1 && $size==1 && (!in_array($array,$arry_point))){
array_push($arry_point, $array);
}
else{
if(sizeof($array)==$size){
sort($array);
if (!in_array($array, $arry_point)) {
array_push($arry_point, $array);
}
}
for($i=0;$i<sizeof($array);$i++){
$copy_array=$array;
unset($copy_array[$i]);
sort($copy_array);
if(sizeof($copy_array)>=$size && (!in_array($copy_array, $temp))){
array_push($temp, $copy_array);
getarrayset($copy_array,$arry_point,$size,$temp);
}
}
}
}
}
спасибо