Я хочу отсортировать массив сложным образом и не знаю, как это сделать. Вот примерное представление о данных, с которыми я работаю:
[
{ target: random.text.cpu-pct-0, otherData[...] },
{ target: random.text.cpu-pct-1, otherData[...] },
{ target: random.text.cpu-pct-2, otherData[...] },
{ target: random.text.example-0, otherData[...] },
{ target: random.text.example-1, otherData[...] },
{ target: random.text.memory, otherData[...] },
...
]
Я хочу, чтобы все объекты с target
, которые включают строку cpu-pct
, были первыми, затем объекты с target
, которые включают строку memory
, затем example
. В этом массиве может быть любое количество элементов, поэтому повторная сортировка по индексу не сработает. Может быть 1 объект с target
, который включает cpu-pct
, или их может быть 50+. То же самое касается других строк, по которым я сортирую.
Я подумал о том, чтобы перебрать исходный массив, проверить, существует ли нужная строка, сохранить соответствующие объекты в новые массивы для каждой цели, которую я ищу, а затем объединить массивы в конце. Я думаю, что это сработает, но я полагаю, что есть лучшее и более эффективное решение, возможно, с использованием usort
, но я в растерянности. Есть идеи?
cpu-pct-0
появиться перед этимcpu-pct-1
? И будет лиtarget
всегда содержать один изcpu-pct
,memery
илиexample
? - person fubar   schedule 17.04.2018-1
,0
или1
в качестве ответа при сравнении двух элементов. Примеры на этой странице помогут. Сначала попробуйте это, а затем не стесняйтесь публиковать второй вопрос с примерами ваших попыток кода. - person Scuzzy   schedule 17.04.2018cpu-pct-0
должно стоять первым и идти в порядке возрастания в соответствии с числом в конце. Забыл упомянуть, но также будетcpu-pct-avg
, который должен появиться после других значенийcpu-pct
. - person Bryan   schedule 17.04.2018