访问数组2和3放在一个字符串数组中

时间:2018-10-29 09:40:34

标签: javascript arrays loops for-loop nested-loops

如何输出:

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 :(得分:3)

您可以使用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);

答案 1 :(得分:3)

尝试一下

//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;
}

答案 2 :(得分:2)

var x = "+91458888888"
var reg = /\+(91|92|923|912)(.*)/
if(reg.test(x)){
  var number = x.match(reg)[2];
}else{
  //false
}

希望这会有所帮助

答案 3 :(得分:1)

由于数组中的索引基于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('=================')
  };
};

答案 4 :(得分:1)

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)

答案 5 :(得分:1)

这应该有效。只需在打印前检查必要条件即可。 并检查是否输出索引超出范围的数组所指向的值。这就是为什么它显示未定义的原因。

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]);
  };
};

答案 6 :(得分:1)

您可以先在input数组中合并城市和日期,然后循环会更容易

var expectedOutput = input.map(a=>{
 return [a[0], a[1], a[2]+' '+a[3], a[4]]
})

答案 7 :(得分:1)

使用本机 ForLoop ,并在一个循环中,您可以执行以下操作:

ASSERT(condition, ...)          

PS: 使用ES6运算符(例如map和forEach)更加优雅。

答案 8 :(得分:0)

尝试在第三个“ for”语句中更改变量名称。我没有对循环进行非常深入的研究,但是我相信您不想在第三循环中使用变量“ i”。尝试将其命名为“ var k”

答案 9 :(得分:0)

HttpModule

简介: 我使用了一个HttpClientModule和1 //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]); } }; };,并且两个条件都使用了2个变量,第一个变量仅在条件为count变量时才可用,该变量检查索引是否为生日,如果是则将当前值连接起来并且它是相邻的值,然后我使用了一个检查变量,如果条件成立,它将是正确的,我们将继续循环而无需深入进行迭代。 check变量仅用于标识当check为0且如果为1时实现的常规迭代,则将显示相邻索引。希望对您有帮助。