Javascript can';不能按键更改值

Javascript can';不能按键更改值,javascript,Javascript,我是JavaScript新手。我有一个树结构,当数组长度大于5时,我想将“tags”属性值从字符串数组更改为字符串 ChangeTags(obj) { Object.keys(obj).forEach(key => { (key === 'tags' && obj[key].length > 5) && obj["tags"] = "some value" || (obj[key] && typeof o

我是JavaScript新手。我有一个树结构,当数组长度大于5时,我想将“tags”属性值从字符串数组更改为字符串

ChangeTags(obj) {
    Object.keys(obj).forEach(key => {
      (key === 'tags' && obj[key].length > 5) && obj["tags"] = "some value" ||
      (obj[key] && typeof obj[key] === 'object') && this.removeEmptyNodes(obj[key]);
    });
    return obj;
  };

翻译不允许我做第四行的作业。我做错了什么?我想你的问题是括号。试试这个:

ChangeTags(obj) {
Object.keys(obj).forEach(key => {
  ((key === 'tags' && obj[key].length > 5) && obj["tags"] = "some value") ||
  ((obj[key] && typeof obj[key] === 'object') && this.removeEmptyNodes(obj[key]));
});
return obj;
};

我想你的问题是括号。试试这个:

ChangeTags(obj) {
Object.keys(obj).forEach(key => {
  ((key === 'tags' && obj[key].length > 5) && obj["tags"] = "some value") ||
  ((obj[key] && typeof obj[key] === 'object') && this.removeEmptyNodes(obj[key]));
});
return obj;
};

这能满足你的需要吗

//我有一个树结构,当数组长度大于5时,我想将“tags”字段值从字符串数组更改为字符串
常量objs=[
{id:1,标记:[first',second']},
{id:2,标记:['first']},
{id:3,标签:['first','second','third','fourth','fifth','sixth']}
];
功能更改标签(arr){
对于(让arr的obj){
obj.tags.length>5&(obj.tags=“某些值”);
}
}
变更标签(objs);

console.log(objs)这是否满足您的需要

//我有一个树结构,当数组长度大于5时,我想将“tags”字段值从字符串数组更改为字符串
常量objs=[
{id:1,标记:[first',second']},
{id:2,标记:['first']},
{id:3,标签:['first','second','third','fourth','fifth','sixth']}
];
功能更改标签(arr){
对于(让arr的obj){
obj.tags.length>5&(obj.tags=“某些值”);
}
}
变更标签(objs);

console.log(objs)这是无效的JavaScript:

(key === 'tags' && obj[key].length > 5) && obj["tags"] = "some value"
赋值的左侧必须是变量或对象属性

当其数组长度大于5时,您似乎试图将
obj.tags
设置为“某个值”。以下是实现这一目标的有效方法:

(key === 'tags' && obj[key].length > 5) && (obj["tags"] = "some value")

通过将
obj[“tags”]=“some value”
用括号括起来,赋值的左侧变成了简单的
obj[“tags”]
,这是一个对象属性。

这是无效的JavaScript:

(key === 'tags' && obj[key].length > 5) && obj["tags"] = "some value"
赋值的左侧必须是变量或对象属性

当其数组长度大于5时,您似乎试图将
obj.tags
设置为“某个值”。以下是实现这一目标的有效方法:

(key === 'tags' && obj[key].length > 5) && (obj["tags"] = "some value")

通过将
obj[“tags”]=“some value”
用括号括起来,赋值的左侧变成了简单的
obj[“tags”]
,这是一个对象属性。

根据您的描述,我不明白您在代码中试图做什么。。。例如,显示长度>1。为什么要为标记设置(=)“一些值”?如果您想比较它(与==),为什么需要将它与“某个值”进行比较?我已经编辑了我的问题。我的坏消息是,>1用于测试目的。我想将tags字段设置为“some value”,当数组长度大于5时,我不明白基于您的描述,您在代码中试图做什么。。。例如,显示长度>1。为什么要为标记设置(=)“一些值”?如果您想比较它(与==),为什么需要将它与“某个值”进行比较?我已经编辑了我的问题。我的坏消息是,>1用于测试目的。我想将tags字段设置为“some value”,当数组长度大于5时,这仍然是无效的JavaScript。“=”左边的东西不是左值:
((key==='tags'&&obj[key].length>5)和&obj[“tags”]=“some value”)
是的,我不同意你的观点,我只是显示了他的逻辑错误。那仍然是无效的JavaScript。“=”左边的东西不是左值:
((key=='tags'&&obj[key].length>5)和&obj['tags]=“some value”)
是的,我不同意你的观点,我只是显示了他的逻辑错误。