首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用带有数组对象的联接方法用逗号分隔

使用带有数组对象的联接方法用逗号分隔
EN

Stack Overflow用户
提问于 2018-07-11 16:19:25
回答 2查看 69关注 0票数 0

我有一个由数组组成的对象,其中包含多个对象。我正在尝试使用联接方法,但当然,我意识到这只在数组上可用,除非转换为其他方法。

我想用逗号/管道分隔我需要的对象。其结果应如下:

DISOVER体验系列195豪华

但是需要一些关于如何实现这一点的指导,因为我得到了以下错误:

"message":"Uncaught :data.lideHeading1.join不是一个函数“

有别的办法吗?请参阅我的代码如下:

代码语言:javascript
复制
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);
});
代码语言:javascript
复制
<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>

编辑:请看下面的代码,它向数组中添加了更多的对象:--我也在使用文本旋转器,它解释了为什么文本被管道分隔。

结果应是:

代码语言:javascript
复制
<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>

代码示例:

代码语言:javascript
复制
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() {
  }
});
代码语言:javascript
复制
<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>

EN

回答 2

Stack Overflow用户

发布于 2018-07-11 16:33:42

您将得到错误,因为data.slideHeading1不是数组,而join()是在数组上实现的方法。

我认为您希望通过管道(|)将所有项目分开。如果是这样,只需将该字符添加到文本的末尾即可。然后循环遍历所有span元素,以填充以前生成的数组中的文本。如下所示:

代码语言:javascript
复制
var imgObj = {
  "slideData": [{
    "slideHeading1": "DISCOVER",
  }, {
    "slideHeading1": "EXPERIENCE",
  }, {
    "slideHeading1": "195 LUXURY",
  }]
};

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]
});
代码语言:javascript
复制
<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>

请注意:,因为您所批准的代码和您所要求的内容的文本之间有点混淆:

我想用逗号分隔我需要的对象。

简单地替换

代码语言:javascript
复制
heading1[idx] = data.slideHeading1 + ' | ';

使用

代码语言:javascript
复制
heading1[idx] = data.slideHeading1 + ', ';
票数 0
EN

Stack Overflow用户

发布于 2018-07-11 16:48:54

由于data.slideHeading1不是数组而是实际的字符串值,所以出现错误。

还将pipe(|)更改为comma(,)

我想用逗号分隔我需要的对象。

刚刚改变了

代码语言:javascript
复制
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);
});

到此

代码语言:javascript
复制
 imgObj.slideData.forEach(function(data, idx) {  
    var seperator = (idx==imgObj.slideData.length-1)? "":",";
                $('.slideTitle .heading-'+( idx+1)).append(data.slideHeading1 + seperator);
            });

代码语言:javascript
复制
var imgObj = {
  "slideData": [{
    "slideHeading1": "DISCOVER",
  }, {
    "slideHeading1": "EXPERIENCE",
  }, {
    "slideHeading1": "195 LUXURY",
  }]
};

 
imgObj.slideData.forEach(function(data, idx) {  
var seperator = (idx==imgObj.slideData.length-1)? "":",";
            $('.slideTitle .heading-'+( idx+1)).append(data.slideHeading1 + seperator);
        });
代码语言:javascript
复制
<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>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51290161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档