Выберите случайную запись из списка строк в JavaScript - PullRequest
0 голосов
/ 08 октября 2019

Хорошо, у меня есть следующий код, который успешно генерирует список (из элемента):

this.elements('css selector', '#bfsDesktopFilters .search-filters__item #ddl-make > option', function (result) {
    result.value.forEach(element => {
        this.elementIdValue(element.ELEMENT, function (text) {
            var makeValue = text.value;
            console.log(makeValue);
        });
    });
})`

, что приводит к (длинному) списку байков, как показано ниже;

enter image description here и т. Д. И т. Д.

Мой вопрос: как я могу случайно выбрать запись из этого списка?

Я пытался разделить результаты;

var elementMakesArray = makeValue.split('');
console.log(elementMakesArray);`

но это дало мне следующее:

enter image description here

Я попробовал это;

var randomMake = Math.floor(Math.random() * makeValue);
console.log(randomMake);`

но получил ошибку NaN.

Так что мне просто интересно, как я могу случайным образом выбрать запись из списка?

Любая помощь будет принята с благодарностью.

Спасибо.

Ответы [ 2 ]

1 голос
/ 08 октября 2019

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

let results = []; // <-- This is the array that the results will go into

this.elements('css selector', '#bfsDesktopFilters .search-filters__item #ddl-make > option', function (result) {
    result.value.forEach(element => {
        this.elementIdValue(element.ELEMENT, function (text) {
            results.push(text.value); // Place individual result into array
        });
    });
    console.log(results); // Log the finished array after loop is done
});

// Now that the array is populated with strings, you can get one random one out:
var rand = results[Math.floor(Math.random() * results.length)];
console.log(rand); // Log the random string
0 голосов
/ 08 октября 2019
let result = this.elements('css selector', '#bfsDesktopFilters .search-filters__item #ddl-menter code hereake > option', function (result) {
   return result.value.forEach(element => {
      return this.elementIdValue(element.ELEMENT, function (text) {
            return text.value;
        })
    })
})

var random = results[Math.floor(Math.random(`enter code here`) * results.length)];
console.log(random); // Log the random string
...