Я хочу создать 3 отдельных массива из одного массива из 7 элементов. То, что я делаю со следующим кодом, работает неправильно. И мне нужна твоя помощь, пожалуйста. Спасибо.
//declara global variables
var i,j; var array_2; var gn; var gl; var gs; var gnArr=[]; var glArr=[]; var gsArr=[]; var array = []; var txtdata;
//get array values from a textarea
txtdata = document.getElementById("txtdata").value;
это значения из ввода TextArea:
txtdata = Distinction:A+:>=75 Alpha:A1:>=75 V.Good:A2:>=75 Good:A3:>=75 Credit:C4:>=75 Pass:P7:>=75 Fail:F9: >=75
// split txtdata using the empty space paramater
array = txtdata.split(" ");
alert(array.length-1); // length of array[] is 7;
//split each array item of the array[] into 3 different arrays... [0,1,2] using the ":" parameter
for ( i = 0; i < array.length-1; i++ ){
array_2 = array[i].split(":"); //there are 3 array items... 0, 1, 2 in array_2
gnArr = array_2[0]+":"; glArr = array_2[1]+":"; gsArr = array_2[2]+":";
}
alert(gnArr); // this only alerts the last (7th) item of the array[i].
Но я хочу получить все array_2[0] для всех 7 элементов массива[i] в gnArr... вот так...
Различие:Альфа:V.Хорошо:Хорошо:Кредит:Прошел:Не прошел
То же самое касается array_2[1] и array_2[2]
А+:А1:А2:А3:С4:Р7:Ф9



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


таким образом: используйте += см. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Addition_assignment
//declara global variables
var i, j , array_2
, gnArr = []
, glArr = []
, gsArr = []
, array = []
, txtdata = "Distinction:A+:>=75 Alpha:A1:>=75 V.Good:A2:>=75 Good:A3:>=75 Credit:C4:>=75 Pass:P7:>=75 Fail:F9:>=75"
;
//get array values from a textarea
// txtdata = document.getElementById("txtdata").value;
array = txtdata.split(" "); // split txtdata using the empty space paramater
for ( i = 0; i < array.length; i++ )
{
array_2 = array[i].split(":"); //there are 3 array items... 0, 1, 2 in array_2
let separator = (i != (array.length -1)) ? ':': ''
gnArr += array_2[0] + separator
glArr += array_2[1] + separator
gsArr += array_2[2] + separator
}
console.info ('gnArr =', gnArr )
console.info ('glArr =', glArr )
console.info ('gsArr =', gsArr )для информации, короче:
let txtdata = "Distinction:A+:>=75 Alpha:A1:>=75 V.Good:A2:>=75 Good:A3:>=75 Credit:C4:>=75 Pass:P7:>=75 Fail:F9:>=75";
let [gnArr, glArr, gsArr] =
txtdata
.split(' ')
.reduceRight((res,part,i)=>
{
part.split(':').forEach((subPart,j)=>res[j].unshift(subPart))
if (!i) res.forEach((gX,j,r)=>r[j]=gX.join(':'))
return res
}
,[ [],[],[] ]);
console.info ('gnArr =', gnArr )
console.info ('glArr =', glArr )
console.info ('gsArr =', gsArr ).as-console-wrapper { max-height: 100% !important; top: 0; }Большое спасибо. Это сработало отлично. Пожалуйста, не могли бы вы немного объяснить мне, если не возражаете? Спасибо. Ты замечательный!
@Cybernetiquettes Если вы действительно новичок, то в последнем коде много «вещей». он начинается с назначения деструктурирования, затем идет цепочка методов, немного кода nija (для !i => eq i===0) ... метод reduceRight встречается нечасто ... короче, было бы слишком много объяснять здесь, Документация MDN должна вам помочь, иначе по каждой из этих тем на этом сайте, вероятно, уже есть все ответы.
Вы должны добавить результат в
gnArrи другие, используя developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…