2017-05-31 47 views
-1

我想使用nodejs從json數組中刪除元素。我的json文件match.json如下。使用Javascript刪除json數組中的元素

[{"id":"1234","time":"3"}] 

從此我要刪除的第一個元素,使JSON文件看起來是這樣的:

[] 

我嘗試下面的代碼,它打印在控制檯一個空數組,但它不是從match.json文件中刪除元素

for(var i=0;i<w;i++) 
{ 
    for(var j=0;j<m;j++){ 
     if((words[i].id==match[j].id) && (words[i].time==match[j].time)) 
     { 
      var f1=0; 
      //var id1=match[j].id; 
      var linkadd=words[i].link; 
      delete match[j]; 
      console.log(match); 
     } 
    } 
} 
+1

看來你不承認JSON的真正目的:不直接字符串表示工作。您可以簡單地通過*解析*來創建一個對象,然後您可以轉換您的對象並*將它序列化回JSON。更容易,更不容易出錯。 – Robert

+0

你總是想刪除第一個元素 –

回答

0

使用match.splice(I,1)的代替刪除匹配[I]

+0

我試過了,它在控制檯上打印空白,但在文件中數據是剩餘的。 – Gousia

+0

你是否正在用匹配數組重寫你的文件? –

+0

它的工作,謝謝 – Gousia

0

這應該工作:

let myJsonString = '[{"id":"1234","time":"3"}]'; 
let myEditedJsonString = JSON.stringify(JSON.parse(myJsonString).shift()); 
0

以除去element..you可以使用接頭。該元件將被去除。

{ 
     var f1=0; 
     //var id1=match[j].id; 
     var linkadd=words[i].link; 
     match.splice(i, 1); 
     console.log(match); 
    } 

如果使用delete match[i],列表變得[undefined]。所以使用拼接。

所以基本上刪除不會刪除元素,而是將元素設置爲undefined。

0

const items = [{"id":"1234","time":"3"}] 
 

 
console.log('before removing item ==> ', items) 
 

 
items.splice(0 /*index to be removed*/, 1/*no. of items to be removed*/) 
 

 
console.log('after removing item ==> ', items)

0

如果你想永遠拿出第一個元素,更新數組使用下面的代碼。

var arr =[{"id":"1234","time":"3"}]

arr.reverse().pop()

如果你想獲得該陣列的一個子集,你可以切片的陣列,但它不會更新數組,但創建一個新的陣列。

arr.slice(STARTING_ADDRESS,NO_OF_ELEMENTS_TO_SLICE)

注意:這將返回一個新的數組,所以,如果你想更新舊的陣列,那麼你需要將其分配到舊數組。

arr = arr.slice(STARTING_ADDRESS,NO_OF_ELEMENTS_TO_SLICE)