Извлечь значение из массива Custom Javascript, если оно является компонентом строкового значения в массиве - PullRequest
0 голосов
/ 07 мая 2020

Я хочу извлечь значения «adult» и «2ndclass» из этого настраиваемого javascript массива в отдельные javascript переменные для каждого значения. У кого-нибудь есть идеи, как это сделать?

В следующем случае в корзину добавлено 2 продукта, но я хотел бы иметь гибкость, чтобы всегда получать любые существующие значения для каждого продукта, добавляемого в корзину независимо от добавленной суммы. Это возможно?

[
  'pass/DE-NO-RS-BE-FI-PT-BG-DK-LT-LU-HR-LV-FR-HU-SE-SI-ME-SK-GB-IE-MK-EE-CH-GR-IT-ES-AT-CZ-PL-RO-NL-TR-BA/**adult/2ndclass**',
  'pass/DE-NO-RS-BE-FI-PT-BG-DK-LT-LU-HR-LV-FR-HU-SE-SI-ME-SK-GB-IE-MK-EE-CH-GR-IT-ES-AT-CZ-PL-RO-NL-TR-BA/**youth/2ndclass**'
]

Заранее благодарю за помощь

Ответы [ 3 ]

0 голосов
/ 07 мая 2020

Вы также можете использовать RegExp , чтобы получить эти значения.

var arr = [
    "pass/DE-NO-RS-BE-FI-PT-BG-DK-LT-LU-HR-LV-FR-HU-SE-SI-ME-SK-GB-IE-MK-EE-CH-GR-IT-ES-AT-CZ-PL-RO-NL-TR-BA/**adult/2ndclass**",
    "pass/DE-NO-RS-BE-FI-PT-BG-DK-LT-LU-HR-LV-FR-HU-SE-SI-ME-SK-GB-IE-MK-EE-CH-GR-IT-ES-AT-CZ-PL-RO-NL-TR-BA/**youth/2ndclass**"
];

var results = [];

for (var i=0; i < arr.length; i++) {
    var matches = arr[i].match(/\*\*(.+)\/(.+)\*\*/);
    if(matches && matches.length >= 3) 
    results.push([matches[1], matches[2]]);
}

console.log(results);

Вы можете попробовать код здесь https://jsfiddle.net/p84eftL7/1/

0 голосов
/ 11 мая 2020

В конце я сделал следующее Мне нужно было получить:

function() { 
var myStringArray = {{MY_ARRAY}};
var arrayLength = myStringArray.length;
var output = []
for (var i = 0; i < arrayLength; i++) {
var string = myStringArray[i].split("/",4)
/*pull index 2 and 3 from string and convert to string*/
output.push(string) 
}
return output
}

После этого мне пришлось l oop новый массив, который выталкивался из информации, как упомянуто выше

Поскольку мне нужно было только разделить конкретные индексы из этого NEW_ARRAY_2, для этого я использовал следующее

function() {
var products = {{NEW_ARRAY_2}};

var arr = []  
for (var i=0; i < products.length; i++) {
var prod = products[i];
var matches = prod[2];
arr.push(matches);
}
var list = arr.join(', ')  
return list 
}

ВОЗВРАТ ОБРАЗЦА для 2 продуктов: 'взрослый, молодежный'

Спасибо за вашу поддержку

0 голосов
/ 07 мая 2020

Прежде всего, я не полностью понял ваш вопрос. Но насколько я понимаю, вам нужны эти 2 значения в конце строк из массива. Вы можете попробовать что-то вроде этого

var a, b;
for(s in YOUR_ARRAY){
    [...other, a, b] = YOUR_ARRAY[s].split("/");
    console.log(a, b);
    //Do whatever you want to do with a,b 
}

Позвольте мне объяснить себя. Во-первых, вам потребуется выполнить итерацию по вашему массиву, поэтому у нас здесь есть 'for' l oop. Затем для каждой строки, заданной параметром «YOUR_ARRAY [s]», вы разделяете строку с помощью «/» в качестве разделителя. В остальном все довольно просто. Для справки go по этим ссылкам https://www.w3schools.com/js/js_loop_for.asp https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

ОБНОВЛЕНИЕ: Как указано в комментариях. Если вы хотите иметь для этого функцию, тогда

function processValues(arr){
    var a, b;
    for(s in arr){
        [...other, a, b] = arr[s].split("/");
        console.log(a, b);
        //Do whatever you want to do with a,b 
   }
}

processValues(YOUR_ARRAY);
...