【发布时间】:2018-07-11 16:19:25
【问题描述】:
我有一个由包含多个对象的数组组成的对象。我正在尝试使用 join 方法,但是当然,我意识到这仅在数组上可用,除非以其他方式进行转换?
我想用逗号/管道分隔我需要的对象。结果应该如下:
发现 |经验 | 195 奢华
但需要一些关于如何实现这一点的指导,因为我收到以下错误:
"message": "Uncaught TypeError: data.slideHeading1.join is not a 函数”
有没有其他方法可以做到这一点?请参阅下面的代码:
var imgObj = {
"slideData": [{
"slideHeading1": "DISCOVER",
}, {
"slideHeading1": "EXPERIENCE",
}, {
"slideHeading1": "195 LUXURY",
}]
};
imgObj.slideData.forEach(function(data, idx) {
var heading1 = data.slideHeading1.join('|');
var heading2 = data.slideHeading2.join('|');
var heading3 = data.slideHeading3.join('|');
$('.slideTitle .heading-1').append(heading1);
$('.slideTitle .heading-2').append(heading2);
$('.slideTitle .heading-3').append(heading3);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h2 class="slideTitle">
<span class="heading-1"></span>
<span class="heading-2"></span>
<span class="heading-3"></span>
</h2>
编辑:请参阅以下代码,该代码将更多对象添加到数组中: 另外 - 我正在使用文本旋转器,它解释了为什么文本被管道分隔。
结果应该是:
<span class="heading-1">DISCOVER | EXPERIENCE | 195 LUXURY</span>
<span class="heading-2">MORE | IT ALL | SUPERJETS</span>
<span class="heading-3">FUEL | | TODAY</span>
代码示例:
var imgObj = {
"slideData": [{
"slideHeading1": "DISCOVER",
"slideHeading2": "MORE",
"slideHeading3": "FUEL",
}, {
"slideHeading1": "EXPERIENCE",
"slideHeading2": "IT ALL",
}, {
"slideHeading1": "195 LUXURY",
"slideHeading2": "SUPERJETS",
"slideHeading3": "TODAY",
}]
};
var heading1 = [];
imgObj.slideData.forEach(function(data, idx) {
if (idx < imgObj.slideData.length - 1)
heading1[idx] = data.slideHeading1 + ' | ';
else // skip if the item is the last item
heading1[idx] = data.slideHeading1;
});
document.querySelectorAll('span[class^=heading-]').forEach(function(el, i) {
el.textContent = heading1[i]
});
$(".slideTitle span").Morphext({
animation: "fadeInLeft",
separator: "|",
speed: 4000,
complete: function() {
}
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.2/animate.min.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/Morphext/2.4.4/morphext.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Morphext/2.4.4/morphext.min.js"></script>
<h2 class="slideTitle">
<span class="heading-1"></span>
<span class="heading-2"></span>
<span class="heading-3"></span>
</h2>
【问题讨论】:
-
你想得到什么输出?
-
data.slideHeadingX返回字符串,你想在这里加入什么?? -
你可以做
var heading1 = data.slideHeading1 + " | ";会给你“发现|” -
连接是将数组中的值连接在一起形成一个带分隔符的字符串,不能在字符串上连接。
-
@dahliacreative 之所以不想使用加号运算符是因为它总是会在末尾添加管道,而join方法不会在末尾添加它。跨度>
标签: javascript jquery arrays object