【问题标题】:replacing key object for the array values替换数组值的键对象
【发布时间】:2020-05-23 23:45:20
【问题描述】:

我在替换对象中的键时遇到问题

let headers = ['title1', 'title2', 'title3']

let obj = {
    0: ['name1', 'name2, 'name3],
    1: ['example1', 'example2, 'example3],
    2: ['xx', 'yy, 'zz],
}

我想做的是:

let obj = {
   'title1': ['name1', 'name2, 'name3],
   'title2': ['example1', 'example2, 'example3],
   'title3': ['xx', 'yy, 'zz],
}

我不确定我的方法是否正确:

  Object.keys(obj).map((el, index, arr) => {
      headers.forEach((item, item_index) => {
          arr[item_index] = item
      })
  })

当我console.log(Object.keys(obj)) 我仍然得到:0,1,2 ....

【问题讨论】:

    标签: json loops object ecmascript-6 key


    【解决方案1】:

    Object.values 仅返回来自指定 obj 的值,Object.fromEntries 允许您基于数组的二元素列表创建新对象:

    let headers = ['title1', 'title2', 'title3'];
    
    let obj = {
        0: ['name1', 'name2', 'name3'],
        1: ['example1', 'example2', 'example3'],
        2: ['xx', 'yy', 'zz']
    };
    
    let result = Object.fromEntries(Object.values(obj).map((v,i) => ([headers[i], v])));
    console.log(result);

    【讨论】:

      【解决方案2】:

      在你的情况下,你没有改变你的对象,你改变了Object.keys返回给你的键数组,这是没有意义的。你可以这样做:

      const headers = ['title1', 'title2', 'title3']
      
      const obj = {
          0: ['name1', 'name2', 'name3'],
          1: ['example1', 'example2', 'example3'],
          2: ['xx', 'yy', 'zz'],
      }
      
      const renameObj = (obj, keys) => {
        return keys.reduce((acc, key, index) => ({ ...acc, [key]: obj[index] }), {})
      }
      
      console.log(renameObj(obj, headers))

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-31
        • 1970-01-01
        • 2018-05-22
        • 2018-05-12
        • 2020-10-30
        • 1970-01-01
        • 1970-01-01
        • 2021-12-11
        相关资源
        最近更新 更多