簡體   English   中英

按嵌套數組中的值過濾數組

[英]Filter an array by value in nested arrays

如果數組的值包含特定字符串,我想返回數組的值

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。 僅包含十六進制而不是等效名稱,並添加#。

有任何想法嗎?

您可以嘗試這樣的事情。

 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 => { if(item[1].indexOf("Green") > -1){ color_swatches.push('#' + item[0]); } }); console.log(color_swatches); console.log(JSON.stringify(color_swatches)); 

.grep()函數«查找滿足過濾函數的數組的元素» 參考

換句話說,在您的代碼中它將“子數組”返回到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數組的內容。

您可以使用map函數來轉換color_swatches數組。 在地圖功能中,您可以選擇第一項並添加# 在警報之前,添加:

color_swatches = $.map(color_swatches[0], function(index, color_swatch) {
    return "#" + color_swatch[0];
});

您可以使用JavaScript函數Array#filterArray#mapString#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"] 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM