получить доступ к массиву № 2 и 3, чтобы быть в одном массиве строк - PullRequest
0 голосов
/ 29 октября 2018

Как получить вывод:

ID: 0001
Name: Mike
Birthday: London 21/05/1989
Hobby: Reading

Мой код ниже не определен, я хочу, чтобы массив city + date был вместе в день рождения.

моего кода не было, проверьте мой код ниже:

var input = [
                ["0001", "Mike", "London", "21/05/1989", "Reading"],
                ["0002", "Sara", "Manchester", "10/10/1992", "Swimming"],
                ["0003", "John", "Kansas", "25/12/1965", "Cooking"],
                ["0004", "Dave", "Nevada", "6/4/1970", "going to gym"]
            ];

var data = ["ID: ", "Name: ", "Birthday: ", "Hobby: "];




for(var i = 0 ; i <= input.length ; i++){
  for(var j = 0  ; j <= input.length ; j++){
  for(var i = 0 ; i <= data.length; i++){
  console.log(data[i] + input[j][i])
    };
  };
};

Это какое-нибудь предложение исправить эту логику? Я просто хочу использовать цикл, для этого.

Ответы [ 10 ]

0 голосов
/ 29 октября 2018

//contoh input
var input = [
                ["0001", "Mike", "London", "21/05/1989", "Reading"],
                ["0002", "Sara", "Manchester", "10/10/1992", "Swimming"],
                ["0003", "John", "Kansas", "25/12/1965", "Cooking"],
                ["0004", "Dave", "Nevada", "6/4/1970", "going to gym"]
            ];

var data = ["ID: ", "Name: ", "Birthday: ", "Hobby: "];

// for(var i = 0 ; i < data.length ; i++){
//   console.log(data[i]);


  var check = 0;
  for(var j = 0  ; j < input.length ; j++){
  var count = 0;
  outerloop:
  
  for(var i = 0 ; i < data.length; i++){
  if(count==2){
    console.log(data[i] + input[j][i] +' '+ input[j][i+1]);
  count = 0;
  check = 1;
    continue outerloop;
  } if(check==1){
    count++;
     console.log(data[i] + input[j][i+1]);
    check = 0; 

}
else{
    count++;
     console.log(data[i] + input[j][i]);
  }
    };
  };

Пояснение: я использовал одну if condition и 1 ifelse condition и использовал 2 переменные для обоих условий, 1-я переменная только в том случае, если условие является переменной-счетчиком, которая проверяет, является ли индекс днем ​​рождения, если да, то объединяет текущее значение и смежное с ним значение , а затем я использовал одну переменную проверки, которая будет истинной в том случае, если условие, и мы продолжим цикл, не углубляясь в эту итерацию. переменная check используется только для идентификации нормальной итерации, которую вы реализовали, когда check равен 0, а если он равен 1, то будет показан соседний индекс. надеюсь, это поможет вам.

0 голосов
/ 29 октября 2018

Используя собственный ForLoop и в один цикл, вы можете сделать:

//contoh input
var input = [
                ["0001", "Mike", "London", "21/05/1989", "Reading"],
                ["0002", "Sara", "Manchester", "10/10/1992", "Swimming"],
                ["0003", "John", "Kansas", "25/12/1965", "Cooking"],
                ["0004", "Dave", "Nevada", "6/4/1970", "going to gym"]
            ];

var data = ["ID: ", "Name: ", "Birthday: ", "Hobby: "];

for(var i = 0 ; input[i] && input[i].length ? i < input[i].length : null ; i++) {
  console.log(data[0] + input[i][0]+ ',', data[1] + input[i][1]+ ',', data[2]+input[i][2] + ' '+ input[i][3]+ ',', data[3]+ input[i][4]);
};

PS: Более элегантно использовать операторы ES6, такие как map и forEach ..

0 голосов
/ 29 октября 2018
let output = input.map( item => {
return ({ID:item[0],name:item[1],birthDay:item[2]+item[3],hobby:item[4]})
})

надеюсь, что это поможет

0 голосов
/ 29 октября 2018

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

var input = [
  ["0001", "Mike", "London", "21/05/1989", "Reading"],
  ["0002", "Sara", "Manchester", "10/10/1992", "Swimming"],
  ["0003", "John", "Kansas", "25/12/1965", "Cooking"],
  ["0004", "Dave", "Nevada", "6/4/1970", "going to gym"]
];

var data = ["ID: ", "Name: ", "Birthday: ", "Hobby: "];

for (var j = 0; j < input.length; j++) {
  for (var i = 0; i < input[j].length; i++) {
    if (i === 2)
      console.log(data[i] + input[j][i] + " " + input[j][i + 1]);
    else if (i === 3)
      console.log(data[i] + input[j][i+1]);
  };
};
0 голосов
/ 29 октября 2018

вы можете сначала объединить город + дату в массиве input, затем цикл станет проще

var expectedOutput = input.map(a=>{
 return [a[0], a[1], a[2]+' '+a[3], a[4]]
})
0 голосов
/ 29 октября 2018

Попробуйте это

//contoh input
var input = [
                ["0001", "Mike", "London", "21/05/1989", "Reading"],
                ["0002", "Sara", "Manchester", "10/10/1992", "Swimming"],
                ["0003", "John", "Kansas", "25/12/1965", "Cooking"],
                ["0004", "Dave", "Nevada", "6/4/1970", "going to gym"]
            ];

var data = ["ID: ", "Name: ", "Birthday: ", "Hobby: "];

// for(var i = 0 ; i < data.length ; i++){
//   console.log(data[i]);

var k = 0;
for(var i = 0 ; i < input.length ; i++){
   for(var j = 0; j <= data.length ; j++){
       if(j == 2 ){
          console.log(data[k] + input[i][j]+ " " + input[i][j+1]);
          j++;
       }
       else
          console.log(data[k] + input[i][j]);
       k++;
   }k=0;
}
0 голосов
/ 29 октября 2018

var input = [
                ["0001", "Mike", "London", "21/05/1989", "Reading"],
                ["0002", "Sara", "Manchester", "10/10/1992", "Swimming"],
                ["0003", "John", "Kansas", "25/12/1965", "Cooking"],
                ["0004", "Dave", "Nevada", "6/4/1970", "going to gym"]
            ];
            
let output= input.map(([ID, Name, Country, DOB, Hobby]) =>{
    return({
      ID, 
      Name, 
      Birthday: `${Country} ${DOB}`, 
      Hobby
    })
})

console.log(output)
0 голосов
/ 29 октября 2018

Попробуйте изменить имя переменной в третьем операторе «for». Я не очень внимательно изучил циклы, но я считаю, что вы не хотите использовать переменную "i" в третьем цикле. Попробуйте назвать это "var k"

0 голосов
/ 29 октября 2018

Вы можете использовать array.map

var input = [
                ["0001", "Mike", "London", "21/05/1989", "Reading"],
                ["0002", "Sara", "Manchester", "10/10/1992", "Swimming"],
                ["0003", "John", "Kansas", "25/12/1965", "Cooking"],
                ["0004", "Dave", "Nevada", "6/4/1970", "going to gym"]
            ];
            
var expectedOutput = input.map(a=>{
 return {ID:a[0],Name:a[1],Birthday:a[2] + ' ' + a[3],Hobby:a[4]}
})

console.log('string output',JSON.stringify(expectedOutput));
console.log(expectedOutput);
0 голосов
/ 29 октября 2018

Поскольку индекс в массиве равен 0 И i=0, вам нужно изменить

i <= input.length

К

i < input.length

//contoh input
var input = [
    ["0001", "Mike", "London", "21/05/1989", "Reading"],
    ["0002", "Sara", "Manchester", "10/10/1992", "Swimming"],
    ["0003", "John", "Kansas", "25/12/1965", "Cooking"],
    ["0004", "Dave", "Nevada", "6/4/1970", "going to gym"]
];

var data = ["ID: ", "Name: ", "Birthday: ", "Hobby: "];

for(var i = 0 ; i < input.length ; i++){
  for(var j = 0  ; j < input.length ; j++){
    for(var i = 0 ; i < data.length; i++){
      if(i == 2)
        console.log(data[i] + input[j][i] +' '+ input[j][i+1])
      else if(i == 3)
        console.log(data[i] + input[j][i+1])
      else
        console.log(data[i] + input[j][i])
    };
    console.log('=================')
  };
};
...