有没有办法忽略<option>标记值内的空格?

时间:2019-07-10 20:48:30

标签: javascript html json vue.js

我正在创建一个项目,在该项目中,我有一个Django服务器将JSON数据发送到运行Vue.js的模板。 JSON数据正在发送带有尾随空格的值,这会引起问题。如果可能的话,我想在HTML页面上将其删除。

我尝试在JSON数据上使用Javascript.trim()似乎没有任何效果。我也无法剥离整个JSON文件的空白,因为某些值需要在其中包含空白。

我正在尝试从{“ keyword”:“ value”}集中删除空格。有时,“值”部分中包含“值”或“值”。

This won't work
<option value="And">And</option>

But this will
<option value="And ">And</option>

JSON对象包含

"keyword": "And "

代替

"keyword": "And"

我希望代码可以工作,而不管数据中值周围的空白如何。

编辑: 我无法使用Javascript的trim()函数,因为JSON数据中有数十次出现此问题。遍历数据并修剪每个单独的字符串将大大增加页面的加载时间。

Edit2:

<b-form-select for="action-text" v-model="step.keyword" class="mx-3">
    <option value="Given ">Given</option>
    <option value="When ">When</option>
    <option value="Then ">Then</option>
    <option value="And ">And</option>
    <option value="But ">But</option>
</b-form-select>

在哪里可以根据需要修剪?

1 个答案:

答案 0 :(得分:0)

您可以使用以下功能修剪键和值:

function trimObj(obj) {
  if (!Array.isArray(obj) && typeof obj != 'object') return obj;
  return Object.keys(obj).reduce(function(acc, key) {
    acc[key.trim()] = typeof obj[key] == 'string'? obj[key].trim() : trimObj(obj[key]);
    return acc;
  }, Array.isArray(obj)? []:{});
}

var a = '{ "name":"John ", "age":30, "city":" New York"}';
console.log(trimObj(JSON.parse(a)));

或者,您也可以将其字符串化,替换并重新解析

JSON.parse(JSON.stringify(badJson).replace(/"\s+|\s+"/g,'"'))

Answered here