Javascript 如何使用密钥返回匹配的json密钥?

Javascript 如何使用密钥返回匹配的json密钥?,javascript,json,Javascript,Json,我试图返回一些键并将其与特定值匹配 如果错误键包含“password”,那么我只想返回上面有password的键,在这种情况下,删除firstname\u为空的键 我想到了这一点,但即使在改变了一些逻辑之后,出于某种原因,我最终还是返回了全部3个 var key = "password"; var errors = [{ "password_empty": "Password is empty", "firstname_empty": "First name is required",

我试图返回一些键并将其与特定值匹配

如果错误键包含“password”,那么我只想返回上面有password的键,在这种情况下,删除firstname\u为空的键

我想到了这一点,但即使在改变了一些逻辑之后,出于某种原因,我最终还是返回了全部3个

var key = "password";

var errors = [{
  "password_empty": "Password is empty",
  "firstname_empty": "First name is required",
  "password_min": "Password needs a min of 6 chars"
}];

for(var i in errors){
    if(errors.match(key)){
        console.log(errors[i]);
    }
}
var key=“密码”;
变量错误=[{
“密码为空”:“密码为空”,
“firstname_empty”:“需要名字”,
“密码_min”:“密码至少需要6个字符”
}];
var resErrors={};
对于(错误[0]中的var i){
如果(i.匹配(键)){
重新错误[i]=错误[0][i];
}
}
控制台日志(重新错误)
var key=“密码”;
变量错误=[{
“密码为空”:“密码为空”,
“firstname_empty”:“需要名字”,
“密码_min”:“密码至少需要6个字符”
}];
var resErrors={};
对于(错误[0]中的var i){
如果(i.匹配(键)){
重新错误[i]=错误[0][i];
}
}

控制台日志(重新错误)答案不是很清楚,所以我有两个选择

如果只想返回任何键包含筛选字符串的错误,可以尝试以下操作

var key=“密码”;
变量错误=[{
“密码为空”:“密码为空”,
“firstname_empty”:“需要名字”,
“密码_min”:“密码至少需要6个字符”
}, {
“没有”:“任何值”
}];
var过滤=错误
.filter(错误=>Object.keys(错误)
.filter(errorKey=>errorKey.indexOf(key)>=0)
(长度>0)

console.log(过滤)答案不是很清楚,所以我有两个选择

如果只想返回任何键包含筛选字符串的错误,可以尝试以下操作

var key=“密码”;
变量错误=[{
“密码为空”:“密码为空”,
“firstname_empty”:“需要名字”,
“密码_min”:“密码至少需要6个字符”
}, {
“没有”:“任何值”
}];
var过滤=错误
.filter(错误=>Object.keys(错误)
.filter(errorKey=>errorKey.indexOf(key)>=0)
(长度>0)
console.log(过滤)第一件事:

请将错误对象设置为数组或对象。在那之后,它应该很容易循环通过它

在这里,我将其实现为一个对象

var key = "password";

var errors = {
    "password_empty": "Password is empty",
    "firstname_empty": "First name is required",
    "password_min": "Password needs a min of 6 chars"
};

for(var err in errors){
    if(err.match(key)){
        console.log(err);
    }
}
“for in”检索对象的键,这对测试更安全

输出:

密码为空

密码(u min)

第一件事:

请将错误对象设置为数组或对象。在那之后,它应该很容易循环通过它

在这里,我将其实现为一个对象

var key = "password";

var errors = {
    "password_empty": "Password is empty",
    "firstname_empty": "First name is required",
    "password_min": "Password needs a min of 6 chars"
};

for(var err in errors){
    if(err.match(key)){
        console.log(err);
    }
}
“for in”检索对象的键,这对测试更安全

输出:

密码为空

密码(u min)


根据是要保留原始数据结构并返回新的数据结构,还是要对原始数据进行变异,可以通过不同的方式获得所需的结果

1) 改变原始数据结构-从对象中删除属性

var key = "password";

var errors = {
    "password_empty": "Password is empty",
    "firstname_empty": "First name is required",
    "password_min": "Password needs a min of 6 chars"
};

for(var err in errors){
    if(err.match(key)){
        console.log(err);
    }
}
var错误=[{
“密码为空”:“密码为空”,
“firstname_empty”:“需要名字”,
“密码_min”:“密码至少需要6个字符”
}];
函数按关键字(obj,关键字){
用于(输入obj){
如果(!key.includes(关键字))删除对象[key];
}
返回[obj];
}
让结果=byKeyword(错误[0],“密码”);

控制台日志(结果)根据是要保留原始数据结构并返回新数据结构,还是要修改原始数据结构,可以通过不同的方式获得所需的结果

1) 改变原始数据结构-从对象中删除属性

var key = "password";

var errors = {
    "password_empty": "Password is empty",
    "firstname_empty": "First name is required",
    "password_min": "Password needs a min of 6 chars"
};

for(var err in errors){
    if(err.match(key)){
        console.log(err);
    }
}
var错误=[{
“密码为空”:“密码为空”,
“firstname_empty”:“需要名字”,
“密码_min”:“密码至少需要6个字符”
}];
函数按关键字(obj,关键字){
用于(输入obj){
如果(!key.includes(关键字))删除对象[key];
}
返回[obj];
}
让结果=byKeyword(错误[0],“密码”);

控制台日志(结果)你想更改原始对象,还是返回一个新对象,保留原始对象?@Andy保留原始对象,我想只返回值而不是键。所有的答案帮助我理解了很多错误。你想更改原始对象,还是返回一个新对象,保留原始对象?@Andy保留原始对象,我想只返回值而不是键。所有的答案都帮助我理解了很多错误。您的第一个示例返回了所有属性。您的第一个示例返回了所有属性。我如何访问键值?假设我想返回“Password is empty”和“Password需要至少6个字符”,而不是密钥。这只能通过返回数组而不是对象来实现。可以吗@约翰逊是的,那很好,我正在研究你的第一个和第三个例子。。这么多的方法。。!我如何访问键值?假设我想返回“Password is empty”和“Password需要至少6个字符”,而不是密钥。这只能通过返回数组而不是对象来实现。可以吗@约翰逊是的,那很好,我正在研究你的第一个和第三个例子。。这么多的方法。。!