首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >转换数组数组插入空,Javascript

转换数组数组插入空,Javascript
EN

Stack Overflow用户
提问于 2017-12-07 23:57:23
回答 2查看 72关注 0票数 0

我以这种方式接收数据:

代码语言:javascript
复制
  [Sun Jan 01 2006 00:00:00 GMT-0600 (CST), 8.605613643557573]
  [Mon Jan 01 2007 00:00:00 GMT-0600 (CST), 4.639263458390814]
  [Tue Jan 01 2008 00:00:00 GMT-0600 (CST), 3.690424190442011]
  [Thu Jan 01 2009 00:00:00 GMT-0600 (CST), -6.068362055704255]
  [Fri Jan 01 2010 00:00:00 GMT-0600 (CST), 0.011317380895792274]
  [Sat Jan 01 2011 00:00:00 GMT-0600 (CST), 3.9984661908088825]
  [Sun Jan 01 2012 00:00:00 GMT-0600 (CST), 2.4211622308876173]
  [Tue Jan 01 2013 00:00:00 GMT-0600 (CST), -1.5740599423273804]
  [Wed Jan 01 2014 00:00:00 GMT-0600 (CST), 2.6624793033769967]
  [Thu Jan 01 2015 00:00:00 GMT-0600 (CST), 1744.9379869455643]
  ["err", NaN]
  [Wed Jan 01 2020 00:00:00 GMT-0600 (CST), 3417.1886283181875]
  [Wed Jan 01 2025 00:00:00 GMT-0600 (CST), 3331.7059850696196]
  [Tue Jan 01 2030 00:00:00 GMT-0600 (CST), 3237.940431993671]

我试着让数据集看起来像这样:

代码语言:javascript
复制
  [Sun Jan 01 2006 00:00:00 GMT-0600 (CST), 8.605613643557573, 0]
  [Mon Jan 01 2007 00:00:00 GMT-0600 (CST), 4.639263458390814, 0]
  [Tue Jan 01 2008 00:00:00 GMT-0600 (CST), 3.690424190442011, 0]
  [Thu Jan 01 2009 00:00:00 GMT-0600 (CST), -6.068362055704255, 0]
  [Fri Jan 01 2010 00:00:00 GMT-0600 (CST), 0.011317380895792274, 0]
  [Sat Jan 01 2011 00:00:00 GMT-0600 (CST), 3.9984661908088825, 0]
  [Sun Jan 01 2012 00:00:00 GMT-0600 (CST), 2.4211622308876173, 0]
  [Tue Jan 01 2013 00:00:00 GMT-0600 (CST), -1.5740599423273804, 0]
  [Wed Jan 01 2014 00:00:00 GMT-0600 (CST), 2.6624793033769967, 0]
  [Thu Jan 01 2015 00:00:00 GMT-0600 (CST), 1744.9379869455643, 0]
  ["err", NaN]
  [Wed Jan 01 2020 00:00:00 GMT-0600 (CST),0 , 3417.1886283181875]
  [Wed Jan 01 2025 00:00:00 GMT-0600 (CST),0 , 3331.7059850696196]
  [Tue Jan 01 2030 00:00:00 GMT-0600 (CST),0 , 3237.940431993671]

有办法通过查看“错误”的索引来做到这一点吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-08 00:05:58

您可以使用一个变量来跟踪是否已经找到"err",并使用该信息来决定.splice()新成员的位置。

代码语言:javascript
复制
var found = false
for (const a of data) {
  if (!found && a[0] === "err")
    found = true;
  else
    a.splice(found ? 1 : 2, 0, 0);
}

如果要使用找到err的索引,则在数组上使用.entries()并更改found变量来存储索引。

代码语言:javascript
复制
var foundIdx = -1;
for (const [idx, a] of data.entries()) {
  const found = foundIdx !== -1;

  if (!found && a[0] === "err")
    foundIdx = idx;
  else
    a.splice(found ? 1 : 2, 0, 0);
}

console.log("the err index was", foundIdx);
票数 2
EN

Stack Overflow用户

发布于 2017-12-08 00:19:13

可以使用findIndex查看错误的索引。

代码语言:javascript
复制
var errIndex = data.findIndex(el => el[0] == "err");
assert(errIndex != -1);
return data.map(([date, val], i) => {
  if (i < errIndex)
    return [date, val, 0];
  if (i > errIndex)
    return [date, 0, val];
  return ["err", NaN] // or whatever
);

或者你可能会想做

代码语言:javascript
复制
var it = data.values();
for (const el of it) {
  if (el[0] == "err") break;
  el.push(0);
}
for (const el of it) {
  el.splice(1, 0, 0);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47705742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档