Array.join()方法分隔符失效求助:为何未得到预期分隔符?
问题
我编写了以下JavaScript代码:
const inpobjarray = [ { 'books': 50 }, { 'grocery': 10 } ] inpobjarray.forEach(i => { console.log({ ...i, 'StringToPrint': Object.entries(i).join(':') }) })
我预期StringToPrint字段用-拼接键与值,但实际输出仍显示默认的,分隔符,请问哪里出错了?
解答
问题出在对Object.entries()返回值的处理上:
Object.entries(i)会返回一个嵌套数组,比如第一个对象会得到[['books', 50]]- 直接调用
join(':')是将外层数组的元素(也就是每个子键值对数组)转为字符串,而子数组转字符串时默认用逗号分隔内部元素,所以你得到的是books,50这类结果。
要实现用-拼接键和值,需要先遍历每个键值对,将键与值用-连接,再处理结果。修改后的代码如下:
const inpobjarray = [ { 'books': 50 }, { 'grocery': 10 } ] inpobjarray.forEach(i => { console.log({ ...i, // 先将每个键值对转为"键-值"格式,单键值对场景可省略join 'StringToPrint': Object.entries(i).map(([key, val]) => `${key}-${val}`).join('') }) })
如果你的对象可能包含多个键值对,还可以在最后用join('自定义分隔符')来连接不同的键值对字符串。
内容的提问来源于stack exchange,提问作者Endless
相关产品推荐
相关产品推荐

