如何在JS ES6新映射(键,值)对中将值设置为对象

时间:2019-10-26 11:12:53

标签: javascript vue.js

我已经完成了我的第一个小型Vue项目,我的上级告诉我要使用新的Map(键值对)用新的硬编码数据结构重新编写它;和价值作为对象。

JS和Vue对我来说是新事物,因此我对其进行了很多查找,并看到一些评论,表明我需要做的结构是不可能的。但是我们公司使用的是这样的数据结构,我需要...

我想做的是一个简单的书单应用程序。每年有5个人可以添加书籍,并且必须按年份排序。当单击日历中的任何一年时,排序范围将获取相应的数据。

我使用filter(),但他说将相同的数据(年份)添加到Array中的对象是一个坏主意,因为这会使处理过程变慢。我们处理大和实时数据。更新周期为1秒,即24/7/365。

如果不可能的话,您能告诉我任何正确的方法吗?

var books = new Map();
books.set(['2018', {'a' : {id: 'userid', name: 'a'}, 'b': {id: userid, name: 'b'}}], ['2019', {'a': {{id: 'userid', name: 'a'}, 'b': {id: userid, name: 'b'])

2 个答案:

答案 0 :(得分:3)

假设不会从您的实际代码中复制语法错误(括号和未引号的id值),我将予以忽略。

您可以将Map() 构造函数与可迭代的数组一起使用,以在初始化期间设置多个元素,例如

let map = new Map([
  ['2018',  { foo: 'bar }],
  ['2019',  someVariable]
]);

不能Map.prototype.set()做同样的事情。

因此,尽管您可以这样做

let books = new Map([[
  '2018', {'a' : {id: 'userid', name: 'a'}}
], 
[
  '2019', {'a': {id: 'userid', name: 'a'}}
]])

如果您开始将事情分解为非常明确,小巧且易于管理的步骤,而不是将所有事情都花在一条长长的线上,那么您的大四生(很快就会成为您)可能会很高兴。

尝试使用这种方法,看看自己的感觉如何

let books = new Map()
books.set('2018', {'a' : {id: 'userid', name: 'a'}})
books.set('2019', {'a' : {id: 'userid', name: 'a'}})

答案 1 :(得分:0)

在VueJS中使用Map()的示例。

export default {
  ...
  data: function() {
    return {
      books: new Map([
        ["2018", { a: { id: "userid", name: "a" } }],
        ["2019", { b: { id: "userid", name: "b" } }]
      ])
    };
  },
  mounted() {
    this.books.forEach((dict, year) => {
      for (const key in dict) {
        const obj = dict[key];
        console.log(`O:--Get Book Info--:year/${year}:id/${obj.id}:name/${obj.name}`);
      }
    });
  }
};