手写,自定义,步骤条

img

像这种类似步骤条样式应该怎么写?

样式是这样得哦, 一排放4个 超过就换行了,1234,8765这样得哦

数据类似这种 ,箭头的样式可以一起帮忙写上嘛》?

list=[{num:https://img-mid.csdnimg.cn/release/static/image/mid/ask/784190276986151.png "#left")
1},{num:2},{num:3},{num:4},{num:5},{num:6},{num:7},{num:8},{num:9},{num:10},{num:11}]

奇数 排 正序,偶数 排 倒序,箭头连接,每排最后一个的箭头要朝下,最后一个数据没有箭头

要对给定的列表进行奇数正序、偶数倒序的排序,并在每一行末尾添加箭头以及最后一个数据不添加箭头,可以按照以下步骤进行操作:

1.分离奇偶数:遍历列表,将奇数和偶数分别存储到两个新的列表中。


numbers = [{num: 1}, {num: 2}, {num: 3}, {num: 4}, {num: 5}, {num: 6}, {num: 7}, {num: 8}, {num: 9}, {num: 10}, {num: 11}]
odd_numbers = []
even_numbers = []

for num in numbers:
    if num['num'] % 2 == 0:
        even_numbers.append(num)
    else:
        odd_numbers.append(num)

2.对奇数和偶数列表进行排序:

odd_numbers.sort(key=lambda x: x['num'])
even_numbers.sort(key=lambda x: x['num'], reverse=True)


3.创建箭头连接:

for i in range(len(odd_numbers) - 1):
    odd_numbers[i]['arrow'] = '->'
for i in range(len(even_numbers) - 1):
    even_numbers[i]['arrow'] = '<-'


4.添加最后一行的箭头朝下:

if len(odd_numbers) > 0:
    odd_numbers[-1]['arrow'] = 'v'
if len(even_numbers) > 0:
    even_numbers[-1]['arrow'] = 'v'


5.合并两个列表:

merged_list = odd_numbers + even_numbers


最终,merged_list将包含按照奇数正序、偶数倒序排序并添加箭头的数据。请注意,这里的箭头用字符串表示,你可以根据需要使用其他符号或自定义的箭头表示方式。

可以这样书写

// 数据
const list = [
  {num: 1}, {num: 2}, {num: 3}, {num: 4},
  {num: 5}, {num: 6}, {num: 7}, {num: 8},
  {num: 9}, {num: 10}, {num: 11} 
];

// 分为奇数和偶数数组
const odd = [];
const even = [];

list.forEach(item => {
  if(item.num % 2) {
    odd.push(item); 
  } else {
    even.unshift(item); // 倒序添加
  }
});

// 拼接HTML
let html = '';

odd.forEach((item, index) => {
  html += `<span>${item.num}</span>`;
  
  if(index !== odd.length - 1) {
    html += `<i class="arrow right"></i>`; 
  }
});

html += `<i class="arrow down"></i>`;

even.forEach((item, index) => {
  html += `<span>${item.num}</span>`;
  
  if(index !== even.length - 1) {
    html += `<i class="arrow right"></i>`;
  } 
});

// 插入页面
document.getElementById('container').innerHTML = html;

这样可以分别处理奇数和偶数,按不同顺序排列,并通过判断下标来确定连接箭头的方向。
需要配合 CSS 定义箭头样式

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/2742010
  • 这篇博客也不错, 你可以看下实现登陆验证码功能,验证码插件(后期自己写一个自己验证码)
  • 除此之外, 这篇博客: 仿淘宝购物车实现功能:滚动页面到【结算操作】不可视时,浏览器底部出现固定栏中的 实现思路: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 首先要判断
    在这里插入图片描述
    的位置,什么时候可视,什么时候不可视,通过这样分析,用户通过滚动页面来控制底部栏的显示或隐藏

  • 您还可以看一下 夏曹俊老师的网络小说抓取软件的设计与研发——来自企业开发实践经验课程中的 需求功能设计与流程图规划小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    根据参考资料中提供的代码实现,可以使用排序算法来实现给定要素的升序和降序排列。然后,可以使用循环和条件语句来确定每行数据是否需要箭头连接,并确定箭头的方向。

    以下是实现这个步骤条样式的代码示例:

    // 步骤条数据
    const data = [1, 2, 3, 4, 5];
    
    // 将数据进行升序排列
    data.quickSort();
    
    // 创建一个变量来存储最终结果
    let result = '';
    
    // 遍历数据
    for(let i = 0; i < data.length; i++){
      const item = data[i];
    
      // 判断是否为奇数行
      if(i % 2 === 0){
        result += `${item} ->`;
      }else{
        result += `${item} <-`;
    
        // 判断是否为最后一行
        if(i !== data.length - 1){
          result += '\n↑';
        }
      }
    
      // 换行
      result += '\n';
    }
    
    console.log(result);
    

    这段代码首先调用quickSort方法将数据进行升序排列,然后使用循环遍历数据。对于每一行,根据奇偶行的不同拼接不同的字符串,同时判断是否为最后一行,如果不是,则在最后一个数据后面添加箭头指向下方的符号(\n↑)。最后打印出结果。

我觉得最简单的一种思路是把数据重新组织一下,每4条为一组,然后再去循环遍历,根据行来进行写样式就可以了。

结果如下:

img

上个代码:逻辑大概就是这么个事,就是没有优化代码,优化有一下应该不需要写这么多。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
    .even,
    .odd {
        display: flex;
        flex-direction: row;
        justify-content: start;
    }

    .even-info,
    .odd-info {
        border: 1px solid red;
        width: 70px;
        text-align: center;
        padding: 3px 0;
    }
    .even-item,.odd-item{
        width: 100px;
        display: flex;
        flex-direction: row;
        justify-content: space-between;
    }

    .even-down {
        display: flex;
        justify-content: right;
        padding-right: 60px;
    }
    .odd-down{
        display: flex;
        justify-content: left;
        padding-left: 30px;
    }
    .even-arrow,.odd-arrow{
        width: 30px;
        text-align: center;
    }

    #container {
        width: 400px;
        margin: 0 auto;
    }
</style>

<body>
    <div id="container">
        <template v-for="(v,k) in calclist">
            <!-- 判断是奇数行还是偶数行 -->
            <template v-if="k%2 == 0">
                <div class="even">
                    <template v-for="(cv,ck) in v">
                        <div class="even-item">
                            <div class="even-info">{{cv.num}}</div>
                            <!-- 判断一下是否是最后一个,每行的最后一个不需要加左右箭头 -->
                            <template v-if="ck != 3">
                                <!-- 判断一下是否是最后一个,总的最后一个也不需要加箭头 -->
                                <template v-if="calclist.length != k+1 || ck+1 != v.length">
                                    <div class="odd-arrow"></div>
                                </template>
                            </template>
                        </div>
                    </template>
                </div>
                <!-- 将每行的向下箭头单独放一行 -->
                <template v-if="calclist.length != k+1">
                    <div class="even-down"></div>
                </template>   
            </template>
            <template v-else>
                <div class="odd">
                    <template v-for="(cv,ck) in v">
                        <div class="odd-item">
                            <div class="odd-info">{{cv.num}}</div>
                            <template v-if="ck != 3">
                                <template v-if="calclist.length != k+1 || ck+1 != v.length">
                                    <div class="odd-arrow"></div>
                                </template>
                            </template>
                        </div>
                    </template>
                </div>
                <template v-if="calclist.length != k+1">
                    <div class="odd-down"></div>
                </template> 
            </template>
        </template>
    </div>
</body>
<script src="./vue-2.6.14.min.js"></script>
<script>
    let vue = new Vue({
        el: '#container',
        data: {
            list: [{ num: 1 }, { num: 2 }, { num: 3 }, { num: 4 }, { num: 5 }, { num: 6 }, { num: 7 }, { num: 8 }, { num: 9 }, { num: 10 }, { num: 11 }],
            calclist: [],
        },
        created() {
            this.init();
        },
        methods: {
            init() {
                let arr = [];
                this.list.forEach(e => {
                    if (arr.length == 4) {
                        this.calclist.push(arr)
                        arr = [];
                        arr.push(e)
                    } else {
                        arr.push(e)
                    }
                });
                if (arr.length != 0) {
                    this.calclist.push(arr)
                }
            }
        }
    });
</script>

</html>

回答部分参考、引用ChatGpt以便为您提供更准确的答案:

您的思路是可行的,使用区块链技术实现食品溯源系统可以有效监督和管理食品的生产、运输和销售过程。下面是对您的思路的一些指导和建议:

  1. RFID和射频识别:使用RFID技术和射频识别设备可以实现对食品的唯一标识和数据采集。通过在食品上附加RFID标签,并使用射频识别设备进行读取,可以获取食品的相关信息,如生产批次、生产日期等。
  2. STM32主控和WiFi模块:STM32微控制器可以作为主控单元,接收从射频识别设备读取到的数据,并将数据传输到区块链网络。WiFi模块可以提供无线连接功能,用于将数据上传到区块链平台。
  3. 区块链技术:区块链可以提供分布式、不可篡改的数据存储和共享机制,确保食品溯源数据的安全性和可信度。您可以选择适合您需求的公有链或私有链,利用智能合约来实现数据的记录、验证和查询功能。
  4. 数据上链:通过WiFi模块将采集到的食品溯源数据传输到区块链网络中,确保数据的实时上链和可追溯性。
  5. 系统设计和开发:在实现食品溯源系统之前,建议进行系统设计,包括数据结构设计、智能合约编写和用户界面设计等。然后,您可以使用适合您技术栈的开发语言和工具,如Solidity、Truffle、Web3.js等,来开发和部署您的区块链应用程序。

需要注意的是,食品溯源系统的实现需要涉及多个技术领域,包括硬件设备、嵌入式开发、网络通信和区块链开发等。由于您刚接触几天,可能需要深入研究和学习这些领域的知识,并与您的导师或专业人士进行沟通和指导。

最后,您还可以参考类似的项目或案例,以了解更多实际应用方面的经验和最佳实践。

就实现上面那个图?

用什么语言呢