javascript - 拆分数组导致错误: not a function

标签 javascript arrays split

我想分割一个已经分割过的数组。

    var string = '2016-08-08,63|2016-08-07,67|2016-08-06,64|2016-08-05,53|2016-08-04,63';
    var array_dt = string.split(',');
    var array_s = array_dt.split('|');
    console.log(array_s);

该代码返回TypeError: array_dt.split is not a function

我猜测 split() 无法拆分数组。我错了吗?

这就是我想要的样子。对于array_dt:2016-08-08、2016-08-07、2016-08-06、2016-08-05、2016-08-04。对于array_s:63,67,64,53,63。我将在图表(线)中使用这两个变量,以便我可以打印出数字的日期。我的代码只是作为示例!

我怎样才能做到这一点?

Demo

最佳答案

如果你想分割两个字符,只需使用正则表达式

var string = '2016-08-08,63|2016-08-07,67|2016-08-06,64|2016-08-05,53|2016-08-04,63';
var array_dt = string.split(/[,|]/);

console.log(array_dt)

这将为您提供一个具有交替值的数组,如果您想将其拆分,您可以这样做

var string = '2016-08-08,63|2016-08-07,67|2016-08-06,64|2016-08-05,53|2016-08-04,63';
var array_dt = string.split(/[,|]/);

var array1 = array_dt.filter( (x,i) => (i%2===0));
var array2 = array_dt.filter( (x,i) => (i%2!==0));

console.log(array1, array2)

或者,如果您想一次完成所有操作,您可以将值减少为一个对象

var string = '2016-08-08,63|2016-08-07,67|2016-08-06,64|2016-08-05,53|2016-08-04,63';

var array = string.split(/[,|]/).reduce(function(a,b,i) {
  return a[i%2===0 ? 'dates' : 'numbers'].push(b), a;
}, {numbers:[], dates:[]});

console.log(array)

如果性能很重要,您将恢复到老式循环和两个数组

var string = '2016-08-08,63|2016-08-07,67|2016-08-06,64|2016-08-05,53|2016-08-04,63';

var array = string.split(/[,|]/);
var array1 = [];
var array2 = [];

for (var i = array.length; i--;) {
  if (i % 2 === 0) {
    array1.push(array[i]);
  } else {
    array2.push(array[i]);
  }
}

console.log(array1, array2)

关于javascript - 拆分数组导致错误: not a function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38882590/

相关文章:

javascript - 将多维数组连接成一维数组

c - 当数组在 c 中达到长度 0 时断言中止

javascript - 如何使用正则表达式拆分具有不同符号和空格的字符串?

python - python 拆分 pandas 列

go - 将一片字符串转换为一片 float32

javascript - 使用 TypeScript 编译类的观察

javascript - ng-repeat 与输入文本框跟踪 $index

php - 从特定数字重新索引数组

javascript - jQuery POST Ajax 请求

javascript - 分层图像幻灯片