gpt4 book ai didi

javascript - 在Javascript中按值从数组中获取元素

转载 作者:行者123 更新时间:2023-12-02 14:26:10 25 4
gpt4 key购买 nike

我有简单的代码,可以让我根据标签显示相关产品,但我想扩展该代码,这样我可以输入多个标签。此时我只能运行:

<script type="text/javascript">category('tag1');</script>

我得到了所有标签中带有“tag1”的产品。在本例中 name1name2

var products = [
{
name: 'name1',
tags: ['tag1', 'tag2', 'tag3'],
},
{
name: 'name2',
tags: ['tag1', 'tag3', 'tag4', 'tag5'],
},
{
name: 'name3',
tags: ['tag2', 'tag5', 'tag6'],
}

];

var finalHtml = "";

function category(tag) {
return products.filter(function(product){
if (~product.tags.indexOf(tag)) {
finalHtml += '<li>' + product.name + '</li>';
document.getElementById("related_prod").innerHTML = finalHtml;
}
});
}

我期望什么?

当我运行该代码时:

<script type="text/javascript">category('tag1, tag6');</script>

我希望看到标签中包含 tag1tag2 的每个产品。在本例中,它应该是 name1name3

最佳答案

这是使用 ECMAScript2015 的解决方案:

var products = [
{
name: 'name1',
tags: ['tag1', 'tag2', 'tag3'],
},
{
name: 'name2',
tags: ['tag1', 'tag3', 'tag4', 'tag5'],
},
{
name: 'name3',
tags: ['tag2', 'tag5', 'tag6'],
}
];

function category(...tags) {
let related = document.getElementById("related_prod");
// clear output
related.innerHTML = '';
// turn array values into object properties for faster lookup
tags = tags.reduce((tags, tag) => (tags[tag] = 1, tags), {});
// find products that have at least one of the tags
products.filter(product => product.tags.some(tag => tags[tag]))
// display the names of the found products
.forEach(product => {
let li = document.createElement('li');
li.textContent = product.name;
related.appendChild(li);
});
}

category('tag4','tag5');
<ul id="related_prod"></ul>

关于javascript - 在Javascript中按值从数组中获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38211119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com