【问题标题】:Javascript how to show each element of array on a new lineJavascript如何在新行上显示数组的每个元素
【发布时间】:2021-07-01 01:44:01
【问题描述】:

我有一个以逗号分隔的字符串构建形式,我使用split 来获取每个值,然后我想在新行上显示每个值,但真正发生的是我在新行上获取每个值,除了最后两个一起显示在同一行上。只是说清楚:

值1

,值2

,值3

,value4,value5

这是我正在使用的功能:

_checkDates: function(dates) {
    if (dates != null)
    {
        var zzz = dates.split(',');
        var xxx = zzz.length;
        console.log(xxx);
        for (var i=0; i<=xxx; i++)
        {
            zzz[i] = zzz[i] + '<br />';
            return zzz;
        }
    }
    return dates;
}

为了清楚这是用 ExtJS 4 编写的,我几乎可以肯定在这种情况下问题是纯 JavaScript 并且与 ExtJS 4 无关,但无论如何,也许我错了。

那么有什么想法为什么会发生,以及如何使最后一个元素也进入新行?

【问题讨论】:

  • 为什么在你的 for 循环中有一个等号。那时应该更少。例如。如果 zzz 的长度为 5 (xxx=5),您想访问元素 0 到 4,值 1 索引 =0,值 2 索引 =1,值 3 索引 =2,值 4 索引 =3 和值 5 索引 =4。目前你正在做 0 到 5。因为循环在你达到 5 而不是 4 后退出。因此你试图访问没有任何价值的 zzz[5]。
  • 我知道,但我尝试使用&lt;&lt;=,即使使用== 也没有用。我不知道没有分配&lt;br /&gt; 标签的原因,实际上这就是我发布问题的原因。下面 Stefan 的回答解决了我当前的问题,但如果有人告诉我脚本中的错误在哪里以及如何修改它以便正常工作,我将不胜感激。

标签: javascript extjs4


【解决方案1】:

我已经修改了你的功能更清洁。因为 stefan 已经提到了你的错误。

function splitDate(dates) {
    if (dates != null)
    {
        var dates = dates.split(',');
        var xxx = dates.length;
        console.log(xxx);
        for (var i=0; i<xxx; i++)
        {
            dates[i] = dates[i];                    
        }
    }
    console.log(dates.join('\r\n'));
    return dates.join('\r\n');        
}

上述功能你可以在一行中完成:

如果是数组,你可以通过以下方式拆分成新行:

var arr = ['apple','banana','mango'];
console.log(arr.join('\r\n'));

如果是字符串:

var str = "apple,banana,mango";
console.log(str.split(',').join("\r\n"));

【讨论】:

  • 你可以做console.log(arr.join('&lt;br&gt;'));
  • arrayVar.forEach(_ =&gt; console.log(_)) 以防你也可以在循环中尝试这个
【解决方案2】:

for 循环很可疑。首先,您不会处理所有项目(正如@sarfraz 指出的那样,最后一个项目丢失了)。其次,您将在 for 循环体中返回结果 (zzz):

for (var i=0; i<=xxx; i++)
{
  zzz[i] = zzz[i] + '<br />';
  return zzz; // for-loop will stop here! resulting in ["value1<br />", "Value2", etc...]
}

在 Javscript 中,您可以简单地“加入”数组:

return dates.split(',').join("<br />")

由于您只是替换字符串,您可以使用replace 方法:

return dates.replace(",", "<br />");

【讨论】:

  • return dates.split(',').join("&lt;br /&gt;") - 正是我需要的。谢谢。
【解决方案3】:

链接:https://snack.expo.io/GcMeWpPUX

import React from 'react'
import { SafeAreaView, Text, View, FlatList } from 'react-native'

export default class App extends React.Component {

    render() {
        return (
            <SafeAreaView style={{ flex: 1, alignItems: 'center', justifyContent: 'center',margin:20 }}>
                <FlatList
                    data={your_array_name}
                    keyExtractor={(item, index) => String(index)}
                    renderItem={({ item, index }) => {
                        return (
                            <Text style={{ color: '#ff8500', fontSize: 18 }}>{item.skills.splice(',').join("\n")}</Text>
                        )
                    }}
                />

            </SafeAreaView>
        )
    }

}


const your_array_name = [
    {
        id: 1,
        text: 'Lorem ipsum is simple dummy text for printing the line',
        skills: ['javascript', 'java']
    },
    {
        id: 2,
        text: 'Lorem ipsum is simple dummy text.',
        skills: ['javascript', 'java']
    }]

【讨论】:

  • 感谢@Hardik Desai,您的解决方案帮助我在渲染数组时解决了这个问题
  • @vaibhavnaik 欢迎✌️ ;)
猜你喜欢
  • 1970-01-01
  • 2012-06-02
  • 2021-12-17
  • 2015-06-27
  • 1970-01-01
  • 2020-08-05
  • 2016-11-08
  • 2021-03-15
  • 1970-01-01
相关资源
最近更新 更多