访问数组中的第2和第3个元素并将它们放入一个字符串数组中。

5
如何进行输出:
ID: 0001
Name: Mike
Birthday: London 21/05/1989
Hobby: Reading

我的代码未定义,我希望将城市+日期的数组合并到生日中。

My code was not, check my code below :

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

有什么建议可以修复这个逻辑吗?我只想使用循环来实现。

请返回翻译后的文本:顶部的示例输出,@Rai。 - Zr Classic
10个回答

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


好的,map函数确实很神奇,但如果我们用循环来代替呢?输出必须是字符串。@justcode - Zr Classic
@ZrClassic,你可以查看我的更新答案,而且map确实是循环。你也可以使用其他循环,比如reduce、foreach等等。这只是一个例子。 - Just code

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
let output = input.map( item => {
return ({ID:item[0],name:item[1],birthDay:item[2]+item[3],hobby:item[4]})
})

希望能对您有所帮助


1

你可以先合并城市和日期到input数组中,这样循环会更容易。

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

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('=================')
  };
};


在那段代码中,你的爱好是:日期,我想要城市+日期的生日放入数组中。 - Zr Classic
你很棒,完美无缺; - Zr Classic
@ZrClassic,很高兴能帮忙 :) - Mamun

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)


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


1
使用本地的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]);
};

注: 使用ES6操作符,如map和forEach更加优雅..


0

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


我做到了,它让文字看起来很混乱,哈哈。 - Zr Classic

0

//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条件和1个ifelse条件,并为两个条件使用了2个变量。只有在if条件中的第一个变量是计数变量,它检查索引是否为生日,如果是,则连接当前值及其相邻值,然后我使用了一个检查变量,在该if条件中将为true,并且我们将继续循环而不会深入该迭代。检查变量仅用于识别正常迭代,当检查为0时实现,如果为1,则显示相邻索引。希望这能帮助你。


谢谢你的解释,我还在努力理解你代码的逻辑 :) - Zr Classic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接