2015-07-12 47 views
1

我想從我的物體中的一個屬性中刪除時間。實際上,我檢查:索引,如果時間戳是否存在於屬性值中。實際上我有此如何從javascript中刪除對象的時間?

輸入

[ 
    { 
    "S": "Charge Interest Against Past Due Account", 
    "C": "Mon Apr 13 10:38:05 GMT 2015" 
    }, 
    { 
    "S": "Charge Interest Against Past Due Account", 
    "C": "Mon Apr 13 10:35:05 GMT 2015" 
    } 
] 

輸出

[ 
    { 
    "S": "Charge Interest Against Past Due Account", 
    "C": "Mon Apr 13 2015" 
    }, 
    { 
    "S": "Charge Interest Against Past Due Account", 
    "C": "Mon Apr 13 2015" 
    } 
] 

的Javascript

var object = ary.map(function(o){ 
    var result={} 
    // console.log(o) 
    for(i in o){ 
     console.log(i+":"+o[i]) ; 
     if(o[i].indexOf(":")!=-1){ 
      console.log("timestam present") 
     } 
    } 
}) 

原始陣列應保持不變,並且結果應該在單獨的陣列被捕獲。

這是鏈接到小提琴。

回答

3

var ary=[ 
 
    { 
 
    "S": "Charge Interest Against Past Due Account", 
 
    "C": "Mon Apr 13 10:38:05 GMT 2015" 
 
    }, 
 
    { 
 
    "S": "Charge Interest Against Past Due Account", 
 
    "C": "Mon Apr 13 10:35:05 GMT 2015" 
 
    }] 
 

 
ary.map(function(o){ 
 
     var d = new Date(o.C); 
 
     o.C = d.toDateString(); 
 
}) 
 
console.dir(ary)

產出

C: "Mon Apr 13 2015" 
S: "Charge Interest Against Past Due Account" 

C: "Mon Apr 13 2015" 
S: "Charge Interest Against Past Due Account" 

UPDATE

要保留原始對象並獲取引起其他物體使用下面的代碼。

var ary=[ 
 
    { 
 
    "S": "Charge Interest Against Past Due Account", 
 
    "C": "Mon Apr 13 10:38:05 GMT 2015" 
 
    }, 
 
    { 
 
    "S": "Charge Interest Against Past Due Account", 
 
    "C": "Mon Apr 13 10:35:05 GMT 2015" 
 
    }] 
 

 
var a = ary.map(function(o){ 
 
     var result = {}; 
 
     var d = new Date(o.C); 
 
     result.S = o.S; 
 
     result.C = d.toDateString(); 
 
     return result; 
 
}) 
 
console.dir(a)

+0

這種方式你可以隨時更改日期格式,如果你想。 – vinayakj

+0

爲什麼它不工作https://jsfiddle.net/7cd9o3uL/ – Shruti

+0

你的安慰錯誤的變量。日誌變量'ary'本身,因爲它包含所需的輸出 – vinayakj

1

您可以按空格拆分C屬性,然後重新加入要保留的部分。試試這個:

for (var i = 0; i < ary.length; i++) { 
    var dateValues = ary[i].C.split(' '); 
    ary[i].C = dateValues[0] + ' ' + dateValues[1] + ' ' + dateValues[2] + ' ' + dateValues[5]  
}; 

Updated fiddle

替代而不醜字符串連接:

for (var i = 0; i < ary.length; i++) { 
    var dateValues = ary[i].C.split(' ') 
    dateValues.splice(3, 2); 
    ary[i].C = dateValues.join(' '); 
}; 
0

var ary = [ 
 
{ 
 
"S": "Charge Interest Against Past Due Account", 
 
"C": "Mon Apr 13 10:38:05 GMT 2015" 
 
}, 
 
{ 
 
"S": "Charge Interest Against Past Due Account", 
 
"C": "Mon Apr 13 10:35:05 GMT 2015" 
 
}]; 
 
for (var i = 0; i < ary.length; i++) { 
 
    ary[i].C = ary[i].C.replace(/\d+:\d+:\d+\s*GMT\s*/g, ''); 
 
} 
 
console.info(ary);

+0

你可以用小提琴 – Shruti

+0

注意,OP是希望刪除'GMT'爲好。 –

1

最好的辦法是將日期解析爲一個Date對象,然後重新格式化它。無論有沒有時間,您都可以根據自己的喜好進行格式化。有許多庫可用於格式化日期。你說你使用的是jQuery,有一個用於日期格式的插件。

我不會推薦你試圖將字符串分解成碎片。有許多日期格式(您不指定此日期的來源),並且您的解決方案可能很容易在將來停止工作。

+0

我打算這樣做,但問題是在日期開始的日子的簡稱。 JS本身沒有這樣做的方法,所以你需要保持一個包含日期名稱的數組,以匹配Dayofweek值。當然不是不可能的,但絕對不美觀 - 特別是涉及多種語言時。日期的格式看起來是專有的,所以我將OP映像已經控制了它。 –

+0

我總是擔心維護費用;這是一個很好的例子,它將被深埋代碼並且工作一年,然後由於其他人的變化而中斷。 – gburton

+0

我還建議使用jquery dateFormat,因爲OP已經在使用jquery。 – gburton