Javascript: фильтровать элементы элементов в массиве - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь выбрать все элементы в массиве, которые содержат слово «Orange», независимо от ранее указанного числа.

Я пытался с этим кодом, но он работает только тогда, когда я пишу точноеимя элемента типа "02orange".

var DWArray = ["apple", "apple", "02orange", "03orange", "04orange", "potato"];

function checkOrange(orange) {
    return orange == "02orange";
}
var OrangeArray = DWArray.filter(checkOrange);
return OrangeArray.join(", ");

Мой желаемый результат:

["02orange", "03orange", "04orange"];

Ответы [ 4 ]

0 голосов
/ 20 февраля 2019

Вы можете сделать это с помощью регулярного выражения и RegExp.test() в одной строке:

const DWArray = ["apple", "apple", "02orange", "03orange", "04orange", "potato"];
const OrangeArray = DWArray.filter(s => /orange/i.test(s)).join(', ');

console.log(OrangeArray);
0 голосов
/ 20 февраля 2019

Вы можете вернуть результат проверки с помощью String#includes.

function checkOrange(orange) {
    return orange.includes("orange");
}

var DWArray = ["apple", "apple", "02orange", "03orange", "04orange", "potato"],
    OrangeArray = DWArray.filter(checkOrange);

console.log(OrangeArray.join(", "));

Для старых браузеров вы можете использовать String#indexOf.

function checkOrange(orange) {
    return orange.indexOf("orange") !== -1;
}

var DWArray = ["apple", "apple", "02orange", "03orange", "04orange", "potato"],
    OrangeArray = DWArray.filter(checkOrange);

console.log(OrangeArray.join(", "));
0 голосов
/ 20 февраля 2019

Один из вариантов - использовать конструктор RegExp и RegExp.prototype.test() со строкой "orange", переданной в качестве первого параметра, и i (игнорировать регистр; если флаг u также включен, использовать регистр Unicodeфлаги сворачивания) и g (глобальное совпадение; поиск всех совпадений, а не остановка после первого совпадения) передаются в качестве второго параметра

var DWArray = ["apple", "apple", "02orange", "03orange", "04orange", "potato"];

function checkOrange(orange) {
  return new RegExp("orange", "ig").test(orange)
}

var OrangeArray = DWArray.filter(checkOrange);

console.log(OrangeArray, OrangeArray.join(", "));
0 голосов
/ 20 февраля 2019

Используйте .includes, чтобы проверить, содержит ли строка оранжевый цвет, с фильтром. См

var DWArray = ["apple", "apple", "02orange", "03orange", "04orange", "potato"];
console.log(DWArray.filter(e=>e.includes('orange')))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...