更改有序列表上的编号以反转百分比

时间:2019-05-07 19:24:48

标签: javascript python django html-lists

我正在尝试为每个搜索结果提供90%匹配率(例如90%匹配)。

是否有任何方法可以在python中编写函数或创建一些Javascript代码,这些代码将自动为有序列表(我的搜索结果)中的每个项目分配100%到0%(相反的顺序)的随机值),则根据列表的默认顺序(1,2,3,4 ..)。

唯一的问题是我不知道将显示的确切结果数,因为每个查询都可能不同,并且我将Elasticsearch用作索引。

HTML的简单示例:

<div>
{% if  page_obj.object_list %}
      <ol class="row top20">

        {% for result in page_obj.object_list %}

     <li class="list-item">
      <div class="showcase col-sm-6 col-md-4">
           <a href="{{ result.object.get_absolute_url }}">
              <h3>{{result.object.title}}</h3>
              <img src="{{ result.object.image }}" class="img-responsive">
           </a>
      </div>
     <li>

         {% endfor %}
      </ol>
</div>

{% else %}
        <p> Sorry, no result found </p>
{% endif %}

现在最终的预期结果应该类似于以下内容:

- Title 1
  image...
  *100% Match*  <-- Random % Value based on the order -->

- Title 2
  image...
  *92% Match*

- Title 3
  image...
  *85% Match*

- Title 4
  image...
  *56% Match*

目前我真的愿意接受任何解决方案。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

这是一个简单的函数,具有循环,每次迭代都会在较低范围之间返回一个随机数,直到达到零为止:

const data = [
    { title: "foo" },
    { title: "foo" },
    { title: "foo" },
    { title: "foo" },
    { title: "foo" },
    { title: "foo" },
    { title: "foo" },
    { title: "foo" },
    { title: "foo" },
    { title: "foo" },
    { title: "foo" },
]

let index = 0;
let results = [];
const randomSearchMatchPercentages = ( array ) => {
    for ( const element of array ) {
        // define a maximum and a minimum range
        const maximum = index <= 100 ? 100 - index : 0;
        const minimum = maximum > 0 ? maximum - 5 : 0;
	
        element.match = Math.round( Math.random() * ( maximum - minimum ) + minimum ) + "%";
        results.push( element );

        // decrease the maximum and minimum for the next iteration
        index += 5;
    }
console.log( results );
}

randomSearchMatchPercentages( data );