我有一个相当奇怪的问题。我有一个字符串格式的html代码数组,我想把它们连接在一起,并插入到我的页面上的一个现有元素中。
数组看起来如下所示:
var sample_array = ['<div class="cld-event"><div class="cld-time">12:00</div><div class="cld-description">Some blabla</div></div>', '<div class="cld-event"><div class="cld-time">15:00</div><div class="cld-description">Some blabla</div></div>', ...];
加入和插入数组时,例如:
$(myelement).html(sample_array.join(''));
奇怪的是,我用逗号分隔了各个html元素,这当然是我不想要的。
仅仅在控制台中记录数组join也会返回由逗号分隔的元素。我已经尝试过用其他字符串(如'+'
)替换join方法中的''
参数,但这也没有帮助,总是出现逗号。
我检查了整个代码,没有任何错误。有没有人遇到过这样的事情?我肯定我在这里犯了一些非常明显和愚蠢的错误,但我就是弄不明白。
4条答案
按热度按时间ltskdhd11#
我自己也有这个问题。自从你问这个问题已经四年了,但是也许像我这样的人会在谷歌上搜索这个答案,这样可以保存一些时间。
我在处理一个字符串,我把它
split()
到一个数组中去修改一些部分,然后再把它join()
回到一个字符串中。var myNiftyStuff = 'My nifty stuff.'; myNiftyStuff = myNiftyStuff.split('');
在这里,
myNiftyStuff
以字符串的形式开始,然后split()
将其转换为数组。然后我想做的任何mods都在数组中发生了。当我试图加入我的数组时,我在调用
myNiftyStuff.join('');
**由于
join()
不是破坏性的,它只是返回自己,而不是修改变量。**但我没有意识到这一点,我的linter没有叫,代码中没有任何东西看起来不对劲。然后,我通过jQuery(不确定jQ在这里是否重要)将数组传递给页面,它使用逗号将其呈现为连接字符串,这肯定是默认行为。
我 * 应该 * 像这样覆盖我的变量
myNiftyStuff = myNiftyStuff.join('');
现在
myNiftyStuff
被更新为join()
的返回值,当我把它添加到页面时,它是一个联接字符串,而之前我传递数组时并没有意识到我没有保存join()
的结果。4c8rllxm2#
你确定你没有以某种方式包括逗号吗?比如添加一组额外的引号,这样你就只有数组的一个元素了?
因为唯一的原因是,实际上您正在联接一个只有一个元素的数组(因此不执行联接,并忽略联接('+'))
sample_array.length
的值是什么?你确定你的数组不是(注意开头的引号)
lnvxswe23#
对我来说就像你想的那样。介意一起来点小玩意吗?
然而,如果你在那里得到了逗号,你必须在你的原始数组中有它们(你是从其他东西中分割出来的吗,或者你是如何生成数组的?)另一种可能是你可能使用了一个变量作为连接参数,不知何故得到了一个错误的值。
您可能没有逗号分隔的数组,而是
["<div></div>,<div></div>"]
,它看起来像是一个包含2个元素的数组,但实际上不是。ccgok5k54#
我也遇到过同样的问题,当你有一个2层数组(一层在另一层里面)时,它似乎会发生,在我的例子中,它是由Object.values(myObject)引起的。我已经用lodash
_.flattenDeep
解决了这个问题,你可以在它的文档中看到更多细节:https://lodash.com/docs/4.17.15#flatten