Как поместить значение ключа в объект в массиве на основе порядка другого массива - PullRequest
0 голосов
/ 23 декабря 2018

У меня есть массив значений, которые соответствуют ключам объекта в объекте.Массив значений имеет порядок, в котором значения ключей должны быть в зависимости от ключей (которые, опять же, соответствуют значениям массива).Мне нужно упорядочить значения ключей на основе порядка блоков в массиве.

Вот объект:

var Payload = { 
BL_0GHahOV7Hb9l141: {questions0: "QID4", questions1: "QID17"},
BL_0SuWoa7K2CkYFsV: {questions0: "QID39", questions1: "QID38"},
BL_0r1ZjeAhMBEBhdz: {questions0: "QID9", questions1: "QID7", questions2: "QID12", questions3: "QID11"},
BL_1Mk6LuLiukBnCU5: {questions0: "QID14"},
BL_2lVBP4EOiOwT0Kp: {questions0: "QID30", questions1: "QID31"},
BL_2tA1Ilad6iCEEu1: {questions0: "QID5", questions1: "QID18"},
BL_4IMpxjrEATyLuqV: {questions0: "QID13"},
BL_4NL909leoyn5KBf: {questions0: "QID44"},
BL_4Yhl7MpygFG9Z6B: {questions0: "QID36"},
BL_6ilSpb6iiCzWvtz: {questions0: "QID27", questions1: "QID24"},
BL_9ESRPcpuMl5TNcx: {questions0: "QID45"},
BL_a4faBNVnTi19wLr: {questions0: "QID29", questions1: "QID32"},
BL_bBGbASH2RnPCskt: {questions0: "QID43", questions1: "QID42", questions2: "QID41", questions3: "QID40", questions4: "QID34"},
BL_bBjaPeuYnHFtBBP: {questions0: "QID16", questions1: "QID15"},
BL_cACgbdijKOAtRo9: {questions0: "QID46"},
BL_eD0WiECJYD2l0nr: {questions0: "QID33"}
}

Вот массив:

 var Array =  ["BL_4NL909leoyn5KBf", "BL_bBGbASH2RnPCskt", "BL_4Yhl7MpygFG9Z6B",
"BL_0GHahOV7Hb9l141", "BL_3n1Vmp4FL6cZZuR", "BL_9ESRPcpuMl5TNcx",
"BL_cACgbdijKOAtRo9", "BL_0SuWoa7K2CkYFsV", "BL_2tA1Ilad6iCEEu1",
"BL_0r1ZjeAhMBEBhdz", "BL_6ilSpb6iiCzWvtz", "BL_a4faBNVnTi19wLr", 
"BL_2lVBP4EOiOwT0Kp", "BL_4IMpxjrEATyLuqV", "BL_bBjaPeuYnHFtBBP", 
"BL_eD0WiECJYD2l0nr", "BL_1Mk6LuLiukBnCU5"]

Обратите внимание, что значения массива соответствуют ключам объекта.Значения объектов должны быть в том же порядке, что и значения массивов, чтобы их значения были в правильном порядке.

Я попробовал следующее, но я просто заканчиваю массивом блоков снова.

var ArrayOfQuestionOrder = []
for( i=0;i<Array.length;i++){

    if(Payload.hasOwnProperty(Array[i])){
        var objectKeys = Object.keys(Payload)
        var index = objectKeys.indexOf(Array[i])
        var OrderOfKeys = Object.keys(Payload)[index]
        ArrayOfQuestionOrder.push(OrderOfKeys);

    }

}console.log(ArrayOfQuestionOrder)  

1 Ответ

0 голосов
/ 23 декабря 2018

Я предполагаю, что вы хотите, чтобы значения вопроса объекта Payload были помещены в новый массив в порядке, указанном в Array.В своем коде вы нажимаете ключи к ArrayOfQuestionOrder вместо значений.Вы можете просто достичь этого, циклически проходя по блокам Array и возвращая значение каждого ключа в Payload объекте, используя map:

let array = ["BL_4NL909leoyn5KBf", "BL_bBGbASH2RnPCskt", "BL_4Yhl7MpygFG9Z6B",
  "BL_0GHahOV7Hb9l141", "BL_3n1Vmp4FL6cZZuR", "BL_9ESRPcpuMl5TNcx",
  "BL_cACgbdijKOAtRo9", "BL_0SuWoa7K2CkYFsV", "BL_2tA1Ilad6iCEEu1",
  "BL_0r1ZjeAhMBEBhdz", "BL_6ilSpb6iiCzWvtz", "BL_a4faBNVnTi19wLr",
  "BL_2lVBP4EOiOwT0Kp", "BL_4IMpxjrEATyLuqV", "BL_bBjaPeuYnHFtBBP",
  "BL_eD0WiECJYD2l0nr", "BL_1Mk6LuLiukBnCU5"
]

let Payload = { 
	BL_0GHahOV7Hb9l141: {questions0: "QID4", questions1: "QID17"},
	BL_0SuWoa7K2CkYFsV: {questions0: "QID39", questions1: "QID38"},
	BL_0r1ZjeAhMBEBhdz: {questions0: "QID9", questions1: "QID7", questions2: "QID12", questions3: "QID11"},
	BL_1Mk6LuLiukBnCU5: {questions0: "QID14"},
	BL_2lVBP4EOiOwT0Kp: {questions0: "QID30", questions1: "QID31"},
	BL_2tA1Ilad6iCEEu1: {questions0: "QID5", questions1: "QID18"},
	BL_4IMpxjrEATyLuqV: {questions0: "QID13"},
	BL_4NL909leoyn5KBf: {questions0: "QID44"},
	BL_4Yhl7MpygFG9Z6B: {questions0: "QID36"},
	BL_6ilSpb6iiCzWvtz: {questions0: "QID27", questions1: "QID24"},
	BL_9ESRPcpuMl5TNcx: {questions0: "QID45"},
	BL_a4faBNVnTi19wLr: {questions0: "QID29", questions1: "QID32"},
	BL_bBGbASH2RnPCskt: {questions0: "QID43", questions1: "QID42", questions2: "QID41", questions3: "QID40", questions4: "QID34"},
	BL_bBjaPeuYnHFtBBP: {questions0: "QID16", questions1: "QID15"},
	BL_cACgbdijKOAtRo9: {questions0: "QID46"},
	BL_eD0WiECJYD2l0nr: {questions0: "QID33"}
}

let newArray = array.map(key => Payload[key]);
console.log(newArray);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...