数组未使用拆分功能给出预期的答案

时间:2018-10-06 18:55:16

标签: javascript arrays string

在此代码中,console.log(name [i])的结果是分割字符串的第一个字符(即c,s,t),但我想像chris这样分开名字。并在MDN上提供了预期的结果,但在js的控制台上却没有。

var char=['chris:2255655','sarrah:5456454','taur:5655226'];

var name=new Array();

for(var i=0;i<char.length;++i){
    name=char[i].split(':');
    console.log(name[i]);
}

4 个答案:

答案 0 :(得分:0)

您的代码应类似于

var char=['chris:2255655','sarrah:5456454','taur:5655226'];

    for(var i=0;i<char.length;++i){   
       var w = char[i].split(":");
       console.log(w[0]);
    }

请检查我的代码段。看来您的拆分不是结果数组,而是字符串。所以你只得到第一个符号

答案 1 :(得分:0)

您可以简单地做到:

var char=['chris:2255655','sarrah:5456454','taur:5655226']

// As array
console.log(char.map(x => x.split(':')[0]))

// As a string
console.log(...char.map(x => x.split(':')[0]))

我们正在使用map浏览每个字符串,并使用:上的split

由于split给我们提供了一个数组,因此我们使用包含名称的0索引。由于Map返回一个数组,因此您可以按原样保留,也可以...将其保留destructure以获取其内容。

答案 2 :(得分:0)

您可以这样做。

const char=['chris:2255655','sarrah:5456454','taur:5655226'];

const name= [];

for(let i=0;i<char.length;i++){
  let val =char[i].split(':');
  name.push(val[0]);
  console.log(name[i]);
}

答案 3 :(得分:0)

由于您知道选择的位置,因此可以直接将其分配给变量:

var char = ['chris:2255655', 'sarrah:5456454', 'taur:5655226']

var names = char.map(item => {

  var [name] = item.split(':'); // <- select only first index
  // var [name, id] = item.split(':'); // <- select first and second index
  // var [name, ...rest] = item.split(':'); // <- select first and rest of the elements
  // var [name,] = item.split(':'); // <- select first and skip next element index using ","

  return name;

})

console.log(names);