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"]) { }