J'ai besoin de remplir 1 comme élément du tableau FilteredRPeakThousandDataArray en commençant par l'index 500 dans le nouveau tableau, et 0 pour l'autre index. Fait comme suit mais le nouveau tableau est rempli uniquement par 0. Explication: à l'index 600,800,1200,1300, l'élément dans FilteredRPeakThousandDataArray devrait être 1 et 0 dans tous les autres index, y compris pour l'index 2 (car 2 est inférieur à 500)

var j = 500;
var FilteredRPeakDataArray = new Array();
var FilteredRPeakDataArray = [2, 600, 800, 1200, 1300];
var FilteredRPeakThousandDataArray = new Array();

for (var i = 0; i < 1500; i++) {
  if (FilteredRPeakDataArray[j] == i) {
    FilteredRPeakThousandDataArray[i] = 1;
  } else {
    FilteredRPeakThousandDataArray[i] = 0;
  }
  
  j++;
}

console.log("FilteredRPeakThousandDataArray " + FilteredRPeakThousandDataArray);
0
Mishty 20 juin 2019 à 12:38

7 réponses

Meilleure réponse

Vous avez eu deux problèmes

L'un est que vous avançiez de toute façon l'indice J

Et la principale était cette ligne: FilteredRPeakDataArray[j] == i

FilteredRPeakDataArray était un tableau avec seulement 5 éléments et vous utilisiez d'énormes indices. il existe de meilleures façons de mettre en œuvre ce que vous essayez de faire, mais je suppose que vous êtes nouveau dans js (ou peut-être le codage), donc ce correctif vous permettra de mieux comprendre ce qui s'est mal passé

var startFrom = 500;
var j=0;
var FilteredRPeakDataArray = new Array();
var FilteredRPeakDataArray = [2,600,800,1200,1300];
var FilteredRPeakThousandDataArray = new Array();

        for (var i=0;i<1500;i++){
      if(FilteredRPeakDataArray[j]==i){
if( i > startFrom ){
        FilteredRPeakThousandDataArray[i] = 1;
}
        j++;
      }
      else{
        FilteredRPeakThousandDataArray[i] = 0;
      }


     }
0
Eliran 20 juin 2019 à 09:46

Remplissez d'abord tous les éléments du tableau avec des 0 et modifiez ensuite les index requis en 1

var j = 500;
var FilteredRPeakDataArray = new Array();
var FilteredRPeakDataArray = [2, 600, 800, 1200, 1300];
var FilteredRPeakThousandDataArray = new Array(1500).fill(0);

for (var i = 0; i < FilteredRPeakDataArray.length; i++) {
    
  FilteredRPeakDataArray[i]>=j ? FilteredRPeakThousandDataArray[FilteredRPeakDataArray[i]]=1:null
  

}

console.log("FilteredRPeakThousandDataArray " + FilteredRPeakThousandDataArray); 
 
0
saketh 20 juin 2019 à 10:11

Je préremplirais simplement le tableau avec 0, puis je définirais 1 pour ces index spécifiques:

var FilteredRPeakThousandDataArray = new Array(1500);
FilteredRPeakThousandDataArray.fill(0);
for (const index of FilteredRPeakDataArray) {
    if (index >= j) {
        FilteredRPeakThousandDataArray[index] = 1;
    }
}

Exemple en direct:

var j = 500;
var FilteredRPeakDataArray = [2, 600, 800, 1200, 1300];
var FilteredRPeakThousandDataArray = new Array(1500);
FilteredRPeakThousandDataArray.fill(0);
for (const index of FilteredRPeakDataArray) {
    if (index >= j) {
        FilteredRPeakThousandDataArray[index] = 1;
    }
}

// Show results
for (const index of [0, ...FilteredRPeakDataArray]) {
    console.log(`FilteredRPeakThousandDataArray[${index}] = ${FilteredRPeakThousandDataArray[index]}`);
}

Mais si vous souhaitez définir ces valeurs lors de la création du tableau, vous pouvez utiliser le rappel de Array.from:

var FilteredRPeakThousandDataArray = Array.from({length: 1500}, (_, index) => {
    return index >= j && FilteredRPeakDataArray.includes(index) ? 1 : 0;
});

Exemple en direct:

var j = 500;
var FilteredRPeakDataArray = [2, 600, 800, 1200, 1300];
var FilteredRPeakThousandDataArray = Array.from({length: 1500}, (_, index) => {
    return index >= j && FilteredRPeakDataArray.includes(index) ? 1 : 0;
});

// Show results
for (const index of [0, ...FilteredRPeakDataArray]) {
    console.log(`FilteredRPeakThousandDataArray[${index}] = ${FilteredRPeakThousandDataArray[index]}`);
}

Array#fill et Array.from sont les deux ajouts relativement récents à JavaScript, mais les deux peuvent être remplis facilement facilement.

0
T.J. Crowder 20 juin 2019 à 09:47

Vous pouvez remplir le tableau des 1500 éléments avec des 0 depuis le début, filtrer le tableau sur les éléments supérieurs à j et remplacer tous les indices par des 1:

var j = 500;

var FilteredRPeakDataArray = [2, 600, 800, 1200, 1300];

var FilteredRPeakThousandDataArray = new Array(1500).fill(0);

FilteredRPeakDataArray.filter(el => el > j).map(el => FilteredRPeakThousandDataArray[el] = 1)

console.log("FilteredRPeakThousandDataArray " + FilteredRPeakThousandDataArray);
0
Kobe 20 juin 2019 à 09:47
const start = 500;
const limit = 1500;
const FilteredRPeakDataArray = [2, 600, 800, 1200, 1300];
// fill array with 1s
const FilteredRPeakThousandDataArray = new Array(limit).fill(1);
// change value of indices stored in FilteredRPeakDataArray to 0
for (const idx of FilteredRPeakDataArray) {
   if (idx >= start) {
      FilteredRPeakThousandDataArray[idx] = 0;
   }
}
console.log("FilteredRPeakThousandDataArray " + FilteredRPeakThousandDataArray);
0
wfreude 20 juin 2019 à 09:46

Vous pouvez comparer j avec i, puis rechercher une valeur particulière dans le tableau FilteredRPeakDataArray

var j = 500;
var FilteredRPeakDataArray = new Array();
var FilteredRPeakDataArray = [2, 600, 800, 1200, 1300];
var FilteredRPeakThousandDataArray = new Array(1500).fill(0);

for (var i = 0; i < 1500; i++) {
  if (i >= j && FilteredRPeakDataArray.includes(i)) {
    FilteredRPeakThousandDataArray[i] = 1;
  } else {
    FilteredRPeakThousandDataArray[i] = 0;
  }
}

console.log( FilteredRPeakThousandDataArray);
0
Code Maniac 20 juin 2019 à 09:47

Vous pouvez simplement utiliser Array.from ().

const FilteredRPeakDataArray = [2, 600, 800, 1200, 1300];

const FilteredRPeakThousandDataArray = Array.from({length: 1500},
 (_, i) => FilteredRPeakDataArray.includes(i) && i > 500 ? 1 : 0
);
console.log(FilteredRPeakThousandDataArray);
2
baao 20 juin 2019 à 09:46