Javascript имеет массивы, которые используют числовые индексы ["john", "Bob", "Joe"]
и объекты, которые могут использоваться как ассоциативные массивы или "карты", которые позволяют использовать строковые ключи для значений объекта {"john" : 28, "bob": 34, "joe" : 4}
.
В PHP легко и A) сортировать по значениям (при сохранении ключа) и B) тестировать существование значения в ассоциативном массиве.
$array = ["john" => 28, "bob" => 34, "joe" => 4];
asort($array); // ["joe" => 4, "john" => 28, "bob" => 34];
if(isset($array["will"])) { }
Как вы могли бы воспользоваться этой функциональностью в Javascript?
Это обычная потребность в таких вещах, как взвешенные списки или отсортированные наборы, где вам нужно сохранить одну копию значения в структуре данных (например, имя тега), а также сохранить взвешенное значение.
Это лучшее, что я придумал до сих пор:
function getSortedKeys(obj) {
var keys = Object.keys(obj);
keys = keys.sort(function(a,b){return obj[a]-obj[b]});
var map = {};
for (var i = keys.length - 1; i >= 0; i--) {
map[keys[i]] = obj[keys[i]];
};
return map;
}
var list = {"john" : 28, "bob": 34, "joe" : 4};
list = getSortedKeys(list);
if(list["will"]) { }