Индексирование списков и массивов Javascript - PullRequest
0 голосов
/ 09 марта 2019

Учитывая массив X, напишите программу, которая удалит все отрицательные числа и заменит их на 0. Например, для массива X = [2, -1,4, -3] вывод вашей программы должен быть [2,0,4,0].

Таким образом, я искал весь Google, но не нашел хороших ответов.

Это мой код на сегодняшний день:

var x = [2, -1, 4, -3]

for(index in x){
    if (index < 0){
    console.log('Yra minusas')
 }
}

Ответы [ 3 ]

1 голос
/ 09 марта 2019

Оператор for...in выполняет итерацию по всем не-символическим , перечисляемым свойствам объекта, но порядок итерации не гарантируется в каком-либо конкретном порядке,Таким образом, вы должны избегать for...in для итерации массива.

Вы можете использовать Array.prototype.map(), что позволит вам создать новый массив с результатамивызова предоставленной функции для каждого элемента в вызывающем массиве.

var x = [2, -1, 4, -3]
x = x.map( i => {
  if(i < 0) i = 0;
  return i;
});

console.log(x)

ИЛИ: С Array.prototype.forEach()

var x = [2, -1, 4, -3]
x.forEach((item, i) => {
  if(item < 0)
    x[i] = 0;
});

console.log(x)

ИЛИ: С простой для петли

var x = [2, -1, 4, -3]
for(var i=0; i<x.length; i++){
  if(x[i] < 0) 
    x[i] = 0;
}
console.log(x);
1 голос
/ 09 марта 2019

Array.map() делает трюк:

var x = [2, -1, 4, -3];
console.log(x.map(item => item > 0 ? item : 0));

// Or even shorter, as suggested in comments:
console.log(x.map(item => Math.max(item, 0)));
0 голосов
/ 09 марта 2019

Избегайте использования for..in для зацикливания массива . В качестве альтернативы вы можете использовать любые другие методы массива.

Например, здесь forEach используется или вы можете использовать обычный цикл for. В этом фрагменте проверяется, больше ли каждый элемент, чем 0, в противном случае этот элемент заменяется на 0

.

var x = [2, -1, 4, -3]

x.forEach(function(item, index) {
  if (item < 0) {
    x[index] = 0
  }
})

console.log(x)
...