【问题标题】:Restructuring an array [closed]重组数组[关闭]
【发布时间】:2023-01-27 16:01:04
【问题描述】:

我正在尝试重组一个数组并构建另一个数组。尝试使用filtermap,但无法实现。数组中有一些因素及其评级(对象的 5 个元素从一开始)。我应该将它们收集在另一个数组中。我有一个这样的数组。

[{
  "carryRating": 21,
  "distanceRating": 72,
  "obHavoYogingarchilikQorVaHKRating": 74,
  "obHavoQuruqRating": 40,
  "yetkazibBeruvchiningMoliyaviyAhvoliRating": 32,
  "id": 1,
  "direction": "A",
  "distance": "90.55",
  "carry": "365",
  "obHavoQuruq": "50",
  "yetkazibBeruvchiningMoliyaviyAhvoli": "56",
  "obHavoYogingarchilikQorVaHK": "58"
}, {
  "carryRating": 35,
  "distanceRating": 74,
  "obHavoYogingarchilikQorVaHKRating": 71,
  "obHavoQuruqRating": 29,
  "yetkazibBeruvchiningMoliyaviyAhvoliRating": 55,
  "id": 2,
  "direction": "B",
  "distance": "82.46",
  "carry": "589",
  "obHavoQuruq": "36",
  "yetkazibBeruvchiningMoliyaviyAhvoli": "98",
  "obHavoYogingarchilikQorVaHK": "65"
}, {
  "carryRating": 19,
  "distanceRating": 76,
  "obHavoYogingarchilikQorVaHKRating": 90,
  "obHavoQuruqRating": 17,
  "yetkazibBeruvchiningMoliyaviyAhvoliRating": 11,
  "id": 3,
  "direction": "C",
  "distance": "76.16",
  "carry": "326",
  "obHavoQuruq": "21",
  "yetkazibBeruvchiningMoliyaviyAhvoli": "20",
  "obHavoYogingarchilikQorVaHK": "23"
}, {
  "carryRating": 25,
  "distanceRating": 78,
  "obHavoYogingarchilikQorVaHKRating": 65,
  "obHavoQuruqRating": 14,
  "yetkazibBeruvchiningMoliyaviyAhvoliRating": 2,
  "id": 4,
  "direction": "D",
  "distance": "72.11",
  "carry": "421",
  "obHavoQuruq": "17",
  "yetkazibBeruvchiningMoliyaviyAhvoli": "3",
  "obHavoYogingarchilikQorVaHK": "78"
}]

我想像这样重组它:

const newData = [
  {
    factor: "carry",
    firstElementOfArray: 21, // it's carryRating 
    secondElementOfArray: 35,
    thirdElementOfArray: 19,
    fourthElementOfArray: 25
  },
  {
    factor: "distance",
    firstElementOfArray: 72, // it's distanceRating
    secondElementOfArray: 74,
    thirdElementOfArray: 76,
    fourthElementOfArray: 78
  },
  {
    factor: "obHavoQuruq",
    firstElementOfArray: 40, // it's obHavoQuruqRating
    secondElementOfArray: 29,
    thirdElementOfArray: 17,
    fourthElementOfArray: 14
  },
  {
    factor: "yetkazibBeruvchiningMoliyaviyAhvoli",
    firstElementOfArray: 32, // it's yetkazibBeruvchiningMoliyaviyAhvoliRating
    secondElementOfArray: 55,
    thirdElementOfArray: 11,
    fourthElementOfArray: 2
  },
  {
    factor: "obHavoYogingarchilikQorVaHK",
    firstElementOfArray: 74, // it's obHavoYogingarchilikQorVaHKRating
    secondElementOfArray: 71,
    thirdElementOfArray: 90,
    fourthElementOfArray: 65
  },
]

我怎样才能做到这一点?

【问题讨论】:

  • 你自己做了什么尝试来解决这个问题? SO 不是来为您编写代码的。
  • 为什么键以这种方式命名?看起来不是很有活力。很难根据数组中元素的数量创建新键。它总是有一个固定的长度还是你期待eleventhElementtwentySecondElement
  • 可能是一个不做X,做Y评论,但是使结果成为数组映射不是更有意义吗? { carry: [21, 35, 19, 25], distance: [72, 74, 76, 78], ... }

标签: javascript arrays object


【解决方案1】:

我会通过将键与属性映射并迭代它们来解决它。 此解决方案确实要求您在输入数组中有固定数量的项目,但如果需要,也可以通过从 [x] 到 'x-thElementOfArray' 的某种“翻译”来扩展它。

let input = [{
  "carryRating": 21,
  "distanceRating": 72,
  "obHavoYogingarchilikQorVaHKRating": 74,
  "obHavoQuruqRating": 40,
  "yetkazibBeruvchiningMoliyaviyAhvoliRating": 32,
  "id": 1,
  "direction": "A",
  "distance": "90.55",
  "carry": "365",
  "obHavoQuruq": "50",
  "yetkazibBeruvchiningMoliyaviyAhvoli": "56",
  "obHavoYogingarchilikQorVaHK": "58"
}, {
  "carryRating": 35,
  "distanceRating": 74,
  "obHavoYogingarchilikQorVaHKRating": 71,
  "obHavoQuruqRating": 29,
  "yetkazibBeruvchiningMoliyaviyAhvoliRating": 55,
  "id": 2,
  "direction": "B",
  "distance": "82.46",
  "carry": "589",
  "obHavoQuruq": "36",
  "yetkazibBeruvchiningMoliyaviyAhvoli": "98",
  "obHavoYogingarchilikQorVaHK": "65"
}, {
  "carryRating": 19,
  "distanceRating": 76,
  "obHavoYogingarchilikQorVaHKRating": 90,
  "obHavoQuruqRating": 17,
  "yetkazibBeruvchiningMoliyaviyAhvoliRating": 11,
  "id": 3,
  "direction": "C",
  "distance": "76.16",
  "carry": "326",
  "obHavoQuruq": "21",
  "yetkazibBeruvchiningMoliyaviyAhvoli": "20",
  "obHavoYogingarchilikQorVaHK": "23"
}, {
  "carryRating": 25,
  "distanceRating": 78,
  "obHavoYogingarchilikQorVaHKRating": 65,
  "obHavoQuruqRating": 14,
  "yetkazibBeruvchiningMoliyaviyAhvoliRating": 2,
  "id": 4,
  "direction": "D",
  "distance": "72.11",
  "carry": "421",
  "obHavoQuruq": "17",
  "yetkazibBeruvchiningMoliyaviyAhvoli": "3",
  "obHavoYogingarchilikQorVaHK": "78"
}];

let propertyMapping = {
  carry: "carryRating",
  distance: "distanceRating",
  obHavoQuruq: "obHavoQuruqRating",
  yetkazibBeruvchiningMoliyaviyAhvoli: "yetkazibBeruvchiningMoliyaviyAhvoliRating",
  obHavoYogingarchilikQorVaHK: "obHavoYogingarchilikQorVaHKRating"
};

let output = Object.keys(propertyMapping).map(key => ({
    factor: key,
  firstElementOfArray: input[0][propertyMapping[key]],
  secondElementOfArray: input[1][propertyMapping[key]],
  thirdElementOfArray: input[2][propertyMapping[key]],
  fourthElementOfArray: input[3][propertyMapping[key]]
}));

console.log(output);

【讨论】:

    猜你喜欢
    • 2021-01-31
    • 1970-01-01
    • 2012-10-24
    • 2013-06-14
    • 2014-11-16
    • 2011-01-11
    • 2019-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多