Javascript代码更新包括每条记录的总数

Javascript code update include count total for each record

本文关键字:记录 代码 更新 包括每 Javascript      更新时间:2023-09-26

我正在尝试修改一些代码,其中我需要添加一个计数到数组。

数据和代码如下:

var data = {
  "people": [{
      "id": "32",
      "description": "some description",
      "archived": "",
      "new": 0,
      "names": [{
        "name": "name 1",
        "translations": null
      }, {
        "name": "name 2",
        "translations": null
      }],
    }, {
      "id": "56",
      "description": "some description",
      "archived": "",
      "new": 0,
      "names": [{
        "name": "name 3",
        "translations": null
      }, {
        "name": "name 4",
        "translations": null
      }],
    }, {
      "id": "99",
      "description": "some description",
      "archived": "",
      "new": 0,
      "names": null,
    },
  ]
};
var mainData = [data];
var namesList = [];
for (var i = 0; i < mainData[0].people.length; i++) {
  var obj = mainData[0].people[i];
  if( obj.names ) {
   var nme = obj.names.map( function(item){
    return item.name; 
   });
   namesList = namesList.concat(nme);
}
}
console.log(namesList); //This should have the list of names

我需要做的是添加一个新的数组,其中包含每个名称字段的计数,例如…当前的数据输出将是:

[2,2]…因为有2条记录,每条记录包含2个名字。

我如何添加这个?

只需将您的nme数组的长度添加到您想要保存计数的其他数组

var namesCount = [];
//...
if (obj.names) {
   var nme = obj.names.map(function(item) {
     return item.name;
   });
   namesList = namesList.concat(nme);
   namesCount.push(nme.length);
}
//..
console.log(namesCount);

演示

var data = {
  "people": [{
      "id": "32",
      "description": "some description",
      "archived": "",
      "new": 0,
      "names": [{
        "name": "name 1",
        "translations": null
      }, {
        "name": "name 2",
        "translations": null
      }],
    }, {
      "id": "56",
      "description": "some description",
      "archived": "",
      "new": 0,
      "names": [{
        "name": "name 3",
        "translations": null
      }, {
        "name": "name 4",
        "translations": null
      }],
    }, {
      "id": "99",
      "description": "some description",
      "archived": "",
      "new": 0,
      "names": null,
    },
  ]
};
var namesList = [];
var namesCount = [];
for (var i = 0; i < data.people.length; i++) {
  var obj = data.people[i];
  if (obj.names) {
    var nme = obj.names.map(function(item) {
      return item.name;
    });
    namesList = namesList.concat(nme);
    namesCount.push(nme.length);
  }
}
console.log(namesCount);

如果你想把它存储在原来的data上,那么就把它设置为某个属性

data.namesCount = [];
//...
if (obj.names) {
   var nme = obj.names.map(function(item) {
     return item.name;
   });
   namesList = namesList.concat(nme);
   data.namesCount.push(nme.length);
}
//..
console.log(data.namesCount);

也因为你没有过滤掉或从obj.names中删除任何对象,你可以只获得该数组的长度来获得计数

namesCount.push( obj.names.length );