【问题标题】:how to store many arrays to one key如何将多个数组存储到一个键
【发布时间】:2018-07-06 09:20:21
【问题描述】:

我最近才开始学习 JS。现在我遇到了这个问题,找不到帮助很大的博客或教程,或者我没有得到他们的分数!

我的问题是如何将多个数组存储到一个键中:

我的代码在这里:

let lines = fs.readFileSync(inGff).toString().split("\n");
 ...
 let column = lines[i].toString().split("\t");
 id = clpP1_69910 or clpP1_54343 or clpP1_69554 ...
 obj[id] = column; //only work for one key to one array.

事实上。我可以用 Perl 简单地做到这一点:

push @{$obj{$id}}, [@info]

不确定 JS 中是否有类似的实用程序或更高级的实用程序。欢迎任何建议。谢谢!

enter image description here

【问题讨论】:

  • Object[key] = [Array, AnotherArray, MoreArray]
  • Object[key] = []; Object[key].push( column );
  • 谢谢大家。问题终于解决了! if(Object[key] === undefined){ Object[key] = []; } Object[key].push(column);

标签: javascript arrays key associative


【解决方案1】:

你可以像这样在对象中存储数组:


let data = {};

let keys = ['clpP1_69910', 'clpP1_69915', 'clpP1_69920', 'clpP1_69925'];

// Iterate keys
keys.forEach(el => {
  let arr = [];

  // Iterate to push array items
  for (let i = 0; i < 10; i++) {
    arr.push(i);
  }

  // Assign array to key
  data[el] = arr;

  // Clear array
  arr = null;
});

console.log(data);

【讨论】:

    【解决方案2】:

    键可以存储任何类型的值

    要解决此问题,您应该在添加列时将clpP1_69910 设置为空的Array 并将.push 设置为数组。

    obj[clpP1_69910] = []
    const lines = fs.readFileSync(inGff).toString().split('\n')
    const columns = lines.map(line => line.toString().split('\t'))
    
    columns.forEach(column => obj[clpP1_69910].push(column))
    

    或者,简短的版本:

    obj[clpP1_69910] = fs.readFileSync(inGff).toString().split('\n').map(line => line.toString().split('\t')).reduce((acc, cur) => acc.concat(cur), [])
    

    最后一部分,.reduce 部分,将数组的数组展平,返回所有列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-29
      • 2013-09-01
      • 2016-03-12
      • 2016-03-12
      • 2012-09-03
      • 1970-01-01
      • 1970-01-01
      • 2014-06-02
      相关资源
      最近更新 更多