javascript - 仅向对象添加双引号
问题描述
我有来自 for 循环的值,我使用它们创建一个对象。
我的最终对象带有单引号和双引号。我只希望它在键周围加上双引号。
我试过用
a.value = `${arrayString[i]}`;
a.value = arrayString[i] + '';
a.value = arrayString[i];
a.value = arrayString[i].toString();
a.value = String(arrayString[i]);
a.value 是我的关键。当我使用: a.value = JSON.stringify(arrayString[i]);
然后我console.log(a.value) // "a"
得到了我想要的密钥,但是当我尝试将它添加到我的最终对象时,我得到了一个额外的单引号:
{ '"a"': 2, '"b"': 2, '"c"': 1, '"aa"': 3 } //what i get on my console.log
{"a": 2, "b": 2, "c": 1, "aa": 3} // what i expect what i get on my console.log
这就是我推动我的最终目标的方式a.count = myCount;
finalResultObject[a.value] = a.count;
myCount
只是我在循环中得到的生成数字
编辑**
这是一个计算特定字符串中单词数的函数
exports.countWordsInString = (someString) => {
let arrayString = [];
arrayString = someString.split(' ');
arrayString = arrayString.filter(value => Object.keys(value).length !== 0);
var finalResultObject = {};
// make a copy of the input array
var copy = arrayString.slice(0);
// first loop goes over every element
for (var i = 0; i < arrayString.length; i++) {
var myCount = 0;
// loop over every element in the copy and see if it's the same
for (var w = 0; w < copy.length; w++) {
if (arrayString[i] === copy[w]) {
// increase amount of times duplicate is found
myCount++;
// sets item to undefined
delete copy[w];
}
}
if (myCount > 0) {
var a = {};
// a.value = '" \\' + arrayString[i] + '"'
// a.value = `${arrayString[i]}`;
// a.value = arrayString[i] + '';
// a.value = arrayString[i];
// a.value = arrayString[i].toString();
a.value = JSON.stringify(arrayString[i]);
console.log(a.value)
a.count = myCount;
finalResultObject[a.value] = a.count;
}
}
// finalResultObject.replace(/\'/gi,'')
console.log(finalResultObject);
return finalResultObject;
};
关于这个函数及其工作原理:它获取一个字符串并对其进行复制然后我们执行两个原始循环并复制然后在某些情况下我添加计数并将其增加一然后我删除即将到来的复制项的计数
这是一个使用 jest 进行更多钙化的联合测试:
test('output number of words in string', () => {
const text = countWordsInString('a b a c aa aa aa b');
expect(text).toBe({"a": 2, "b": 2, "c": 1, "aa": 3})
});
当我使用时,这会显示在我的控制台中a.value = JSON.stringify(arrayString[i]);