我想使用nodejs从json数组中删除元素。我的json文件match.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);
}
}
}
答案 0 :(得分:0)
使用 match.splice(i,1)代替删除匹配[i]
答案 1 :(得分:0)
var arr = JSON.parse(Match_json_data);
// remove 1st element
var indexOfItemToRemove = 0;
var noOfItemsToRemove = 1;
arr.splice(indexOfItemToRemove, noOfItemsToRemove);
参考:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/splice?v=control
答案 2 :(得分:0)
这应该有效:
let myJsonString = '[{"id":"1234","time":"3"}]';
let myEditedJsonString = JSON.stringify(JSON.parse(myJsonString).shift());
答案 3 :(得分:0)
删除元素..你可以使用splice ..元素将被删除。
{
var f1=0;
//var id1=match[j].id;
var linkadd=words[i].link;
match.splice(i, 1);
console.log(match);
}
如果您使用delete match[i]
,则列表将变为[undefined]
。所以使用splice。
所以基本上删除不会删除元素,而是将元素设置为未定义。
答案 4 :(得分: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)
&#13;
答案 5 :(得分: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)