Javascript 仅当值除空格外不包含其他字符时才使用字符串替换

Javascript 仅当值除空格外不包含其他字符时才使用字符串替换,javascript,string,Javascript,String,我试图返回一个对象数组,其中对于每个对象上的特定属性,值不是null,也不是空字符串。实际上,在字符串包含多个空格的情况下修剪字符串是很棘手的。我大部分时间都在使用它,但唯一的问题是,现在我的“好”字符串值也删除了它的空白,所以两个单词被混合成一个单词 在我的用例中,我只想在字符串中没有其他字符时删除空白。这就是我所拥有的: const goalNotes = [ { "goal": { "lastUpdate": 1,

我试图返回一个对象数组,其中对于每个对象上的特定属性,值不是
null
,也不是空字符串。实际上,在字符串包含多个空格的情况下修剪字符串是很棘手的。我大部分时间都在使用它,但唯一的问题是,现在我的“好”字符串值也删除了它的空白,所以两个单词被混合成一个单词

在我的用例中,我只想在字符串中没有其他字符时删除空白。这就是我所拥有的:

const goalNotes = [
  {
    "goal": {
      "lastUpdate": 1,
      "value": " ",
    },
    "guid": "4a0c6410-6668-47e0-bbf7-0d27defc7a05",
  },
   {
    "goal": {
      "lastUpdate": 1,
      "value": null,
    },
    "guid": "4a0c6410-6668-47e0-bbf7-0d27defc7a05",
  },
    {
    "goal": {
      "lastUpdate": 1,
      "value": "Something here!",
    },
    "guid": "4a0c6410-6668-47e0-bbf7-0d27defc7a05",
  }
];

let goalValues = goalNotes
  .filter(gn => gn.goal.value !== null)
  .filter(gn => gn.goal.value = gn.goal.value.replace(/\s+/g, ''))
  .filter(gn => gn.goal.value !== '');
我最终得到的结果(这是正确的对象,但包含两个单词的值已被压缩为一个):

您可以使用
array#filter
string#trim
删除空字符串和空字符串。如果支持,则我们可以使用以下内容:

goalNotes.filter(({goal: {value}}) => value?.trim())
const goalNotes=[{“goal”:{“lastUpdate”:1,“value”:“,”,“guid”:“4a0c6410-6668-47e0-bbf7-0d27defc7a05”,},{“goal”:{“lastUpdate”:1,“value”:null,},“guid”:“4a0c6410-6668-47e0-bbf7-0d27defc7a05”,},{“goal”:{“lastUpdate”:1,“value”:“这里的某物”,},“guid”:“4a04c6440-6668-47e07-defc7a05”,
result=goalNotes.filter(({goal:{value}})=>value&&value.trim());
控制台日志(结果)
作为控制台包装{max height:100%!important;top:0;}
您可以使用
array#filter
string#trim
删除空字符串和空字符串。如果支持,则我们可以使用以下内容:

goalNotes.filter(({goal: {value}}) => value?.trim())
const goalNotes=[{“goal”:{“lastUpdate”:1,“value”:“,”,“guid”:“4a0c6410-6668-47e0-bbf7-0d27defc7a05”,},{“goal”:{“lastUpdate”:1,“value”:null,},“guid”:“4a0c6410-6668-47e0-bbf7-0d27defc7a05”,},{“goal”:{“lastUpdate”:1,“value”:“这里的某物”,},“guid”:“4a04c6440-6668-47e07-defc7a05”,
result=goalNotes.filter(({goal:{value}})=>value&&value.trim());
控制台日志(结果)

.as控制台包装{max height:100%!important;top:0;}
您可以在“one”
.filter()调用中执行所有检查

const goalNotes=[
{
“目标”:{
“最新更新”:1,
“价值”:“,
},
“guid”:“4a0c6410-6668-47e0-bbf7-0d27defc7a05”,
},
{
“目标”:{
“最新更新”:1,
“值”:空,
},
“guid”:“4a0c6410-6668-47e0-bbf7-0d27defc7a05”,
},
{
“目标”:{
“最新更新”:1,
“值”:“这里有东西!”,
},
“guid”:“4a0c6410-6668-47e0-bbf7-0d27defc7a05”,
}
];
const result=goalNotes.filter(项=>{
如果(
item.goal.value//检查是否为null或未定义
&&(//如果不为null或未定义。。
'string'==typeof(item.goal.value)//检查它是否是字符串
&&0!==item.goal.value.trim().length//如果是字符串,请检查trim length是否为0
)
){返回项}
});

console.log(result)
您可以在“one”
.filter()调用中执行所有检查

const goalNotes=[
{
“目标”:{
“最新更新”:1,
“价值”:“,
},
“guid”:“4a0c6410-6668-47e0-bbf7-0d27defc7a05”,
},
{
“目标”:{
“最新更新”:1,
“值”:空,
},
“guid”:“4a0c6410-6668-47e0-bbf7-0d27defc7a05”,
},
{
“目标”:{
“最新更新”:1,
“值”:“这里有东西!”,
},
“guid”:“4a0c6410-6668-47e0-bbf7-0d27defc7a05”,
}
];
const result=goalNotes.filter(项=>{
如果(
item.goal.value//检查是否为null或未定义
&&(//如果不为null或未定义。。
'string'==typeof(item.goal.value)//检查它是否是字符串
&&0!==item.goal.value.trim().length//如果是字符串,请检查trim length是否为0
)
){返回项}
});

console.log(result)
这是返回所有3个对象吗?我只想要为“Soemthing here”返回的一个。请参阅更新的答案。我喜欢
value&&value.trim()
的简洁性;只要不需要类型检查,这就不需要再详细了。也许我们还可以使用可选的链接
value?.trim()
这是返回所有3个对象?我只想要为“Soemthing here”返回的一个。请参阅更新的答案。我喜欢
value&&value.trim()
的简洁性;只要不需要进行类型检查,就不需要再详细了。也许我们还可以使用可选的链接
value?.trim()