在Array(javascript)中生成某些字符串

时间:2018-06-10 00:32:30

标签: javascript arrays

光环,首先我很抱歉,如果这是一个简单的问题,但是现在我很难弄清楚我遇到的错误。 (我只是在学习JavaScript BTW)。所以我有一个函数将生成一个字符串数组,如果数组的长度是奇数,数组的中间将包含星号,其余的将只是空字符串。但如果数组的长度是偶数,则mid和mid之前的索引将包含星号(*)。测试用例如下:

git remote set-up origin https://user2@github.com/user2/arepo.git

我弄清楚首​​先你需要创建一个数组来包含字符串,然后将数组的长度除以2,以便我们可以知道数组奇数或偶数的天气。如果奇怪,我会将星号推到索引数组[mid],如果它甚至我将星号推到索引数组[mid-1]和[mid]。这是我到目前为止所得到的:

console.log (Exercise(5) // ['','','*','','']    
console.log (Exercise(4) // ['','*','*','']
console.log( Exercise1(0)) // invalid input 

我不知道我做错了什么。这是我的逻辑还是我的语法不正确或者我只是愚蠢。

2 个答案:

答案 0 :(得分:0)

更简单的方法可能是创建一半空白字符串数组,然后使用spread:



function Exercise(length) {
  if (!Number.isInteger(length) || length < 1) return null;
  const blanks = Array(Math.floor((length - 1) / 2)).fill('');
  return length % 2 === 0
    ? [...blanks, '*', '*', ...blanks]
    : [...blanks, '*', ...blanks];
}

console.log(Exercise(5));
console.log(Exercise(4));
console.log(Exercise(0));
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以使用两个for循环与+/-索引相结合,让您的生活更加轻松。

虽然值得一提的是,如果您的号码是1或2,结果将分别为[*]或[*,*]。不知道你想怎么处理它。

&#13;
&#13;
var Exercise1 = (num) => {
  let arr = [];
  if (num % 2) {
    for(i=0;i<num;i++){arr.push((i==~~(num/2))?'*':'');}
  } else {
    for(i=0;i<num;i++){arr.push((i==(num/2)-1 || i==(num/2))?'*':'');}
  }
  return arr;
}

console.log('Even (4): ['+Exercise1(4)+']');
console.log('Odd (5): ['+Exercise1(5)+']');
&#13;
&#13;
&#13;