我有这个for循环。它的控制台记录了我的json文件中颜色字段的颜色。但是有重复的颜色。
这是我的json代码
var movies = [
{
"name": "Feugo",
"outline": "Description about Hydrangea flowers.",
"months": [
"Jan",
"Feb",
"Mar",
"Apr",
"Nov",
"Dec"
],
"color": [
"Orange",
"Yellow"
],
"type": [
"Alstroemeria"
],
"image": "alstroemeria-fuego_w300_h400.jpg",
"id": 1
},
{
"name": "Atlanta",
"outline": "Description about Hydrangea flowers.",
"months": [
"Jan",
"Feb",
"Mar",
"Apr",
"Nov",
"Dec"
],
"color": [
"Purple",
"Yellow",
"White"
],
"type": [
"Alstroemeria"
],
"image": "alstroemeria-atlanta_w300_h400.jpg",
"id": 2
},
这是我的for循环:
for (var i = 0; i < movies.length; i++) {
var obj = movies[i];
for (var j = 0; j < obj.color.length; j++) {
console.log(obj.color[j]);
}
}
我如何只显示其中一个?
谢谢!
答案 0 :(得分:1)
获取唯一值的许多解决方案都涉及设置对象属性,并在完成时读取这些属性。
重用示例循环的快速而又脏的示例:
var colsObj = {};
for (var i = 0; i < movies.length; i++) {
var obj = movies[i];
for (var j = 0; j < obj.color.length; j++) {
colsObj[obj.color[j]] = 1;
}
}
var collarr = Object.keys(colsObj);
console.log(collarr);
设置为1只是一个占位符,只要创建了属性,就可以将其设置为undefined或任何其他值。 属性在虚拟对象colsObj上设置。 Object.keys返回对象的直接可枚举属性的数组。
答案 1 :(得分:0)
您可以将每个项目插入到Set对象中,以确保每个项目都是唯一的,然后遍历该集合:
var colourSet = new Set();
for (var j = 0; j < obj.color.length; j++) {
colourSet.add(obj.color[j]);
}
for (let colour of colourSet) console.log(colour);
有关Set对象的更多信息,请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set。