是否有快速获取以某个字符串开头的键值?
示例:
var obj = {
"key123" : 1,
"anotherkey" : 2
}
obj['key1'] // would return 1
obj['ano'] // would return 2
由于
答案 0 :(得分:4)
您可以创建辅助功能
function findValueByPrefix(object, prefix) {
for (var property in object) {
if (object.hasOwnProperty(property) &&
property.toString().startsWith(prefix)) {
return object[property];
}
}
}
findValueByPrefix(obj, "key1");
正如肯尼评论的那样,上述功能将返回第一场比赛。
答案 1 :(得分:0)
没有真正简单的方法可以做到这一点,因为javascript对象是哈希表,你需要在其整个表单中的键来提取它所拥有的值的内存地址。
我会把它变成一个函数并将它追加到对象的原型中,这样我们就可以在所有哈希表(javascript对象)中访问这个函数了
Object.prototype.getBy = function(value){
for(var key in obj){
if(key.search(value) != -1){
return obj[key];
}
}
}
//so this should work
var obj = {
"key123" : 1,
"anotherkey" : 2
}
obj.getBy('ano'); //returns 2
//This should as well
var differentObj = {
"somekey" : 1,
"anotherkey" : 2
}
differentObj.getBy('some'); //returns 1
答案 2 :(得分:0)
搜索以指定字符串开头的属性名称的第一个匹配项:
var obj = {
"key123": 1,
"anotherkey": 2,
"somekey" : 3
};
function getObjectValueByPartialName(obj, name){
if (typeof obj !== "object") {
throw new Error("object is required!");
}
for (var prop in obj) {
if (prop.indexOf(name) === 0){
return obj[prop];
}
}
return "no such property!";
}
console.log(getObjectValueByPartialName(obj, 'some')); // output: 3
console.log(getObjectValueByPartialName(obj, 'key1')); // output: 1
答案 3 :(得分:0)
我们可以使用以下单行通用自定义方法
var obj = {
"key123" : 1,
"anotherkey" : 2
};
const getObjPropForMatchPrefixKey = (object,prefix) => Object.keys(object).filter(item => item.toString().startsWith(prefix))[0];
console.log(obj[getObjPropForMatchPrefixKey(obj,'an')]);
console.log(obj[getObjPropForMatchPrefixKey(obj,'key')]);