簡體   English   中英

我如何使用 HTML5 文檔的下划線在 javascript 中小寫對象值/數據

[英]how can i lowercase object value/data in javascript using underscore for HTML5 document

我有一個對象數組( arr ),每個對象有 3 個屬性(Department, Categories, ProductTypes) ,這些屬性的值是大小寫的混合。 我創建了一個重復的arr數組並將其命名為arr2 我需要在arr和搜索過濾器(它已經是小寫的)之間進行比較,以便它返回一個具有匹配條件的對象數組,並使用以下方法分配給arr

arr=_.where(arr2,filter);

所以我想遍歷arr2並將這里的所有內容小寫,如下所示:

_.each( arr2, function(item){ //loop around each item in arr2
    _.each( item, function(properties){ //loop around each property in item
        properties=properties.toLowerCase();
        console.log("Item: ",item,"ID: ",properties); 
    });
});

但是我在 chrome 中得到以下輸出:

Default1.html:109 Item:  Object {Departments: "Dep1", Categories: "Cat1", ProductTypes: "Prod1"} ID:  dep1
Default1.html:109 Item:  Object {Departments: "Dep1", Categories: "Cat1", ProductTypes: "Prod1"} ID:  cat1
Default1.html:109 Item:  Object {Departments: "Dep1", Categories: "Cat1", ProductTypes: "Prod1"} ID:  prod1

如何將“ Dep1/Cat1/Prod1 ”值更改為小寫?

原因是當您使用for eachfor in循環時,您會得到臨時變量,這些變量是原始變量的副本,而更改僅適用於副本。

這是工作代碼:

arr2 = [{ObjectCategories: "Cat1", Departments: "Dep1", ProductTypes: "Prod1"}]

for (var i =0 ; i<arr2.length; i++){
    for (var key in arr2[i]){
        if (key === undefined || arr2[i][key] === undefined) {
            continue;
        }
        console.log(key)
        console.log(arr2[i][key])
        arr2[i][key] = arr2[i][key].toLowerCase();
    };
};
console.log(arr2[0])

為了比較下面的代碼將無法正常工作的緣故:

arr2 = [{ObjectCategories: "Cat1", Departments: "Dep1", ProductTypes: "Prod1"}]

for (var item in arr2){
    for (var key in item){
        if (key === undefined || item[key] === undefined) {
            continue;
        }
        console.log(key)
        console.log(item[key])
        item[key] = item[key].toLowerCase();
    };
};
console.log(arr2[0])

你可能會覺得很有趣。

通過一些實驗,我設法解決了這個問題,我的最終代碼片段:

var arr2 = [];

_.each( arr, function(item){ //loop around each item in arr
    _.each( item, function(properties, id){ //loop around each property in item
        if (filter[id] == (item[id].toLowerCase())) {
            arr2.push( item );
        }
    });
});

基本上arr2最初被聲明為空,我通過下划線為每個 item 對象遍歷arr ,然后遍歷 item 對象中的每個屬性。 然后我可以檢查搜索過濾器變量(已經是小寫的)是否等於小寫項目的屬性值,如果是,則將項目對象添加到arr2對象數組。 簡單的!

下划線中可能有一個更短的函數可以更進一步地整理它。

暫無
暫無

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

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