在数组中生成特定字符串(javascript)

在数组中生成特定字符串(javascript),javascript,arrays,Javascript,Arrays,halo,首先,如果这是一个简单的问题,我很抱歉,但现在我必须找出我犯的错误。(顺便说一句,我正在学习JavaScript)。所以我有一个函数,它将生成一个字符串数组,如果数组的长度是奇数,数组的中间将包含星号,其余的将只是空字符串。但如果数组的长度为偶数,则mid和mid之前的索引将包含星号(*)。测试用例如下所示: console.log (Exercise(5) // ['','','*','',''] console.log (Exercise(4) // ['','*','*'

halo,首先,如果这是一个简单的问题,我很抱歉,但现在我必须找出我犯的错误。(顺便说一句,我正在学习JavaScript)。所以我有一个函数,它将生成一个字符串数组,如果数组的长度是奇数,数组的中间将包含星号,其余的将只是空字符串。但如果数组的长度为偶数,则mid和mid之前的索引将包含星号(*)。测试用例如下所示:

console.log (Exercise(5) // ['','','*','','']    
console.log (Exercise(4) // ['','*','*','']
console.log( Exercise1(0)) // invalid input 
我发现,首先你必须做一个数组来包含字符串,然后用2除以数组的长度,这样我们就可以知道数组是奇数还是偶数。如果是奇数,我将把星号按到索引数组[mid],如果是偶数,我将把星号按到索引数组[mid-1]和[mid]。到目前为止,我得到的是:

function Exercise1(num){
var result = [] ;
var midArr = num.length/2 
var oddArr = Math.floor (midArr)
for (var i = 0; i<num.length; i++){
   if (num.length % 2 !== 0) {
      result = push.result(num[oddArr]('*'))
      return result
    } else if (num.length % 2 === 0 ){
      result = push.result(num[midArr-1][mid]('*'));
      return result
    } else {
      return invalid  ;
    }
  }
}
函数练习1(num){
var结果=[];
var midArr=num.length/2
var oddArr=数学地板(midArr)

对于(var i=0;i一种更简单的方法可能是创建一个空白字符串数组,长度为数组长度的一半,然后使用排列:

功能练习(长度){
如果(!Number.isInteger(length)| | length<1)返回null;
常量空格=数组(数学层((长度-1)/2)).fill(“”);
返回长度%2==0
?[…空格、'*'、'*'、…空格]
:[…空格,“*”,…空格];
}
控制台日志(练习(5));
控制台日志(练习(4));

console.log(练习(0));
您可以使用两个for循环与+/-索引相结合,使您的生活更加轻松

虽然值得一提的是,如果你的数字是1或2,结果将分别是[*]或[*],我不确定你想如何处理

var Exercise1=(num)=>{
设arr=[];
如果(数量%2){

对于(i=0;首先,您使用
num
作为数组(访问
length
和类似内容),但它是参数,从我看到的应该是一个数字。我不明白:(@nomad使用
var midArr=num/2
而不是
var midArr=num.length/2
因为num是一个数字,而不是一个数组。你能建议我用我的代码修改什么吗?@maljukan哦,我明白了,这样我们就可以知道它是奇数还是偶数了?哦,所以你给variabel/const指定了一个空字符串。我没想到这一点,但我不太明白e语法:if(!Number.isInteger(length)| | length<1)返回null;const blanks=Array(Math.floor((length-1)/2)).fill(“”);返回长度%2==0您能详细说明一下吗?如果输入的格式不符合要求,则第一行返回null。第二行创建一个空白字符串数组,长度为一半,或长度的一半减去一(以产生整数的为准。然后,将其展开到返回的数组中。数组前的问号是什么?是否需要展开数组?这是三元运算符。条件为真,返回第一个表达式,否则返回第二个表达式。