Допустим, я хочу выполнить поиск в массиве тикеров и вернуть все элементы в массиве, которые начинаются с буквы S, а затем записать их в sCompanies = [].

Кто-нибудь знает, как я это делаю, используя цикл for или while?

// Iterate through this list of tickers to build your new array:
let tickers = ['A', 'SAS', 'SADS' 'ZUMZ'];

//console.log(tickers);



// Define your empty sCompanies array here:

//Maybe need to use const sComapnies = [] ?
let sCompanies = []


// Write your loop here:


for (i = 0; i < tickers.length; i++) {
  console.log(tickers[i]);
  
}



// Define sLength here:

sLength = 'test';

/*
// These lines will log your new array and its length to the console:
console.log(sCompanies);
console.log(sLength);*/
0
Alexander Forrest 3 Авг 2020 в 19:31

4 ответа

Лучший ответ

Он будет проходить через массив тикеров и, если он начинается с «S», добавить его в массив sCompanies.

tickers.forEach(function (item, index, array) {
    if (item.startsWith('S')) {
        sCompanies.push(item);
    }
})
0
MacKey 3 Авг 2020 в 16:46

Почему бы вам просто не использовать функцию фильтра вот так?

// Only return companies starting by "S"
const sCompanies = tickers.filter((companyName) => companyName.startsWith('S')) 

Но если вы хотите сделать это с помощью цикла for, вы можете проверить это:

// Iterate through this list of tickers to build your new array:
const tickers = ["A", "SAS", "SADS", "ZUMZ"];

//console.log(tickers);

// Define your empty sCompanies array here:
const sCompanies = [];

// Write your loop here:
for (let i = 0; i < tickers.length; i++) {
  tickers[i].startsWith("S") && sCompanies.push(tickers[i]);
}

// Define sLength here:
const sLength = sCompanies.length;

/*
// These lines will log your new array and its length to the console:
*/
console.log(sCompanies);
console.log(sLength);
0
fedesc 3 Авг 2020 в 18:13

С вашим циклом это будет так:

for (i = 0; i < tickers.length; i++) {
  if (tickers[i].startsWith('S')) {
    sCompanies.push(tickers[i]);
  }
}

ИЛИ немного более современно

for (const i in tickers) {
  if (tickers[i].startsWith('S')) {
    sCompanies.push(tickers[i]);
  }
}

Еще лучше использовать for...of, который предназначен для циклических массивов.

for (const ticker of tickers) {
  if (ticker.startsWith('S')) {
    sCompanies.push(ticker);
  }
}

Или вы можете сделать один лайнер, как в ответе выше.

0
fedesc 3 Авг 2020 в 16:49

Я также получил следующий код в качестве модельного решения, я понял, что причина использования этого формата в том, что я хотел указать что-то, кроме первой буквы:

if(tickers[i][0] == 'S')

Тогда я мог бы использовать [1] вместо [0] для нацеливания на вторую букву.

0
Alexander Forrest 3 Авг 2020 в 16:59