筛选在嵌套数组由值的阵列
我想返回数组的值,如果其值包含一个特定的字符串筛选在嵌套数组由值的阵列
var names= [
["FCFEDA", "Moon Glow"],
["FCFFE7", "China Ivory"],
["FCFFF9", "Ceramic"],
["FD0E35", "Torch Green"],
["FD5B78", "Wild Watermelon"],
["FD7B33", "Crusta Green"]
];
var color_swatches = [];
var result = $.grep(names, function(v,i) {
if(v[1].indexOf("Green") > -1){
return v[0];
}
})
color_swatches.push(result);
alert(color_swatches);
导致
FD0E35, Torch Green,FD7B33, Crusta Green
正是我想要这样
["#FD0E35","#FD7B33"]
请注意结果应放在方括号内和qoutes内。只包含十六进制不等同的名称和#添加。
任何想法?
的.grep()
功能«查找满足过滤器功能的数组的元素»reference
换句话说,在代码中它返回的“子阵列”到result
。
尝试使用一个简单的循环是这样的:
var names= [
["FCFEDA", "Moon Glow"],
["FCFFE7", "China Ivory"],
["FCFFF9", "Ceramic"],
["FD0E35", "Torch Green"],
["FD5B78", "Wild Watermelon"],
["FD7B33", "Crusta Green"]
];
var color_swatches = [];
for(i=0;i<names.length;i++){
if(names[i][1].indexOf("Green") > -1){
color_swatches.push(names[i][0]);
}
}
//color_swatches.push(result);
console.log(JSON.stringify(color_swatches));
注意,我用JSON.strignify()
只看到在控制台color_swatches
阵列的内容。
您可以使用地图功能来转换color_swatches
阵列。在地图功能中,您可以选取第一项并添加#
。提醒之前,请添加:
color_swatches = $.map(color_swatches[0], function(index, color_swatch) {
return "#" + color_swatch[0];
});
您可以尝试类似这样的操作。
var names= [
["FCFEDA", "Moon Glow"],
["FCFFE7", "China Ivory"],
["FCFFF9", "Ceramic"],
["FD0E35", "Torch Green"],
["FD5B78", "Wild Watermelon"],
["FD7B33", "Crusta Green"]
];
var color_swatches = [];
names.forEach(item => {
\t if(item[1].indexOf("Green") > -1){
color_swatches.push('#' + item[0]);
}
});
console.log(color_swatches);
console.log(JSON.stringify(color_swatches));
我需要完全像这样[“#FD0E35”,“#FD7B33”] –
与我的区别在哪里? – Xzandro
您可以使用JavaScript函数Array#filter
,Array#map
和String#includes
:
var names = [
["FCFEDA", "Moon Glow"],
["FCFFE7", "China Ivory"],
["FCFFF9", "Ceramic"],
["FD0E35", "Torch Green"],
["FD5B78", "Wild Watermelon"],
["FD7B33", "Crusta Green"]
]
console.log(names.filter(n => n[1].includes('Green')).map(n => `#${n[0]}`))
// ["#FD0E35","#FD7B33"]
另一种:除非你需要支持一些古老的浏览器,你可以跳过jQuery和使用香草JS:VAR结果= names.filter(function(v){ return v [1] .indexOf(“Green”)> -1; })。map(function(w){#} + w [0]; }); –
你不需要jQuery来实现这一点。 [看我的回答](http://stackoverflow.com/a/41178944/652669)。 :) –