首页 > 解决方案 > 使用来自多个数组的键转换一个对象以进行排序,现在希望它们返回为数组,因为它们是排序的

问题描述

var values =selectValues;
    var names = selectNames;
    var priorities = prioritizedHours;
    var prefers = preferHrsArray;
    var years = workedYearsArray;
    var items = values.map((value, index) => {
                           return {
                           value: value,
                           name: names[index],
                           priority: priorities[index],
                           prefer: prefers[index],
                           year: years[index]
                           }
                           });
    var arrayObject = JSON.stringify(items);
    Logger.log('Object array: '+arrayObject);

在上面的程序中,我从名称、优先级等数组中创建了一个对象。在我对它们进行排序后,结果对象如下:

[
  {"value":1,"name":"Fiona","prefer":30,"year":6},
  {"value":1,"name":"Martin","prefer":40,"year":7},
  {"value":2,"name":"Adam","prefer":0,"year":20},
  {"value":2,"name":"Steve","prefer":100,"year":5}
]

现在排序完成后,我希望数组恢复到对象中的状态。我正在尝试获取如下数组:

value = [1,1,2,2],
name = ['Fiona', 'Martin','Adam', 'Steve'],
prefer = [30,40,0,100],
year = [6,7,20,5]

谢谢你帮助我。

标签: javascriptgoogle-apps-script

解决方案


对于这种情况,您可以使用 forEach

const array = [
  {"value":1,"name":"Fiona","prefer":30,"year":6},            
  {"value":1,"name":"Martin","prefer":40,"year":7},
  {"value":2,"name":"Adam","prefer":0,"year":20},
  {"value":2,"name":"Steve","prefer":100,"year":5}
]

const values = []
const names = []
const prefers = []
const years = []

array.forEach(rec => {
  values.push(rec.value),
  names.push(rec.name),
  prefers.push(rec.prefer),
  years.push(rec.year)
})

console.log(values)
console.log(names)
console.log(prefers)
console.log(years)


推荐阅读