【问题标题】:How can I iterate some array and generate hash如何迭代一些数组并生成哈希
【发布时间】:2019-12-04 04:08:11
【问题描述】:

我有以下数组:

[1, 2, 3, 4, 5]

我需要根据上面的数组创建一个哈希,如下所示:

cars = { models: [ { 1: '', 2: '', 3: '', 4: '', 5: '' } ] }

我怎样才能创建这个哈希并访问一些像这样的值:

cars['models]['2']

【问题讨论】:

  • 你的意思是像cars = { models: Object.fromEntries(array.map(n => [n, ''])) }吗?顺便说一句,那将是{ models: { 1: '', 2: '', 3: '', 4: '', 5: '' } }(注意删除了包装对象字面量的单元数组)。
  • 是的,如何访问 hash['models'][1] ?这种方式行不通。谢谢
  • @GuilhermeNascimento 我意识到您是 SO 新手,但“这不起作用”并不是一个足够好的解释。您尝试过什么/遇到了什么错误?
  • 好的。我正在尝试访问 { models: { 1: '', 2: '', 3: '', 4: 'A', 5: '' } } 使用:cars['models']['4']并且应该返回“A”

标签: javascript arrays hash


【解决方案1】:

cars['model']['2'] 无法匹配您显示的数据结构,因为 models 是一个数组而不是一个 javascript 对象。

你必须使用cars.model[0]['2']cars['model'][0]['2']

const createHash=arr=>
{
  let model = []
  model[0] = Object.fromEntries(arr.map(n => [n, 'x'])) 
  return {model}
}


let cars =  createHash ( [1, 2, 3, 4, 5] )

console.log ( cars.model[0]['2'] )
console.log ( 'cars :', JSON.stringify( cars ) )

如果要匹配cars['model']['2'],则必须将数据结构更改为cars : {"model":{"1":"y","2":"y","3":"y","4":"y","5":"y"}}

// different structure :
const createHash=arr=>
{
  let model = Object.fromEntries(arr.map(n => [n, ''])) 
  return {model}
}


let cars =  createHash ( [1, 2, 3, 4, 5] )

cars['model']['4'] = 'A'

console.log( "cars['model']['4'] ->", cars['model']['4'])

console.log ( 'cars :', JSON.stringify( cars ) )

【讨论】:

  • 查看 OP 对他们的问题的最新评论 - 他们提到了两种不同的结构,可能值得弄清楚真正需要哪种模型。
  • cars['models]['2'] 无法匹配他的数据结构。
  • 同意,不是问题中提出的结构。但是评论中的结构是{ models: { 1: '', 2: '', 3: '', 4: 'A', 5: '' } } - 并且cars['models']['2'] 可以在那里工作....
  • @cale_b (当我更正我的答案时,OP 的评论到达了),如果我将值设置为 x,那是因为空链不会在文件 console.log 中返回任何内容。你怎么这么挑剔?
猜你喜欢
  • 2016-06-23
  • 2014-12-15
  • 1970-01-01
  • 2015-11-08
  • 2015-08-30
  • 2016-10-07
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
相关资源
最近更新 更多