Как обновить значение в JSON в NodeJS и отфильтровать, чтобы исключить значения? - PullRequest
0 голосов
/ 26 февраля 2020
var data = [{
   "description" : "sample",
   "link" : "mylink",
   "id" :"1",
   "deviceName":"mydevice1"
},
{
   "description" : "sample",
   "link" : "mylink",
   "id" :"1",
   "deviceName":"mydevice1"
},
{
   "description" : "sample",
   "link" : "mylink",
   "id" :"",
   "deviceName":""
}]

Как мне обновить deviceName там, где оно пустое, то есть "deviceName"="" до novaluespecified в моем JSON объекте ??

Примечание

изначально это огромный массив, поэтому я не могу сделать это для одного индекса

Также мне нужно отфильтровать все устройства названный device1 и НЕ включающий, что в моем последнем JSON я искал и нашел .filter для включения, но не смог найти функцию для исключения чего-либо

РЕДАКТИРОВАТЬ

Я бы предпочел не использовать jquery и, если возможно, сделать это с NodeJS полностью .. любая помощь приветствуется:)

, и я не против использовать jquery, если это абсолютно необходимо

Ответы [ 3 ]

1 голос
/ 26 февраля 2020

вы можете попробовать это так:

var updatedData = data.map(item => item.deviceName == '' ? { ...item, deviceName: 'novaluespecified'} : {...item} )

вывод:

[ { description: 'sample',
    link: 'mylink',
    id: '1',
    deviceName: 'mydevice1' },
  { description: 'sample',
    link: 'mylink',
    id: '1',
    deviceName: 'mydevice1' },
  { description: 'sample',
    link: 'mylink',
    id: '',
    deviceName: 'novaluespecified' } ]

Для фильтрации вы можете сделать что-то вроде этого:

data.filter(item => item.deviceName !== 'device1')
1 голос
/ 26 февраля 2020

Вы можете использовать функцию reduce для генерации желаемого выхода только в одном l oop.

let data = [{"description" : "sample","link" : "mylink","id" :"1","deviceName":"mydevice1"},{"description" : "sample","link" : "mylink","id" :"1","deviceName":"mydevice1"},{"description" : "sample","link" : "mylink","id" :"","deviceName":""}],
    result = data.reduce((a, {deviceName, ...rest}) => {
      if(deviceName !== "mydevice1") a.push(Object.assign({}, rest, {deviceName: deviceName.trim() === "" ? "novaluespecified" : deviceName}));
      return a;
    } , []);

console.log(result);
1 голос
/ 26 февраля 2020

Вы можете попробовать ниже. Надеюсь, это поможет. Сначала я использовал Array.map для преобразования значения, когда имя_устройства пусто string. Далее я использовал Фильтр массива с помощью indexOF для фильтрации значений.

var data = [{
    "description": "sample",
    "link": "mylink",
    "id": "1",
    "deviceName": "mydevice1"
  },
  {
    "description": "sample",
    "link": "mylink",
    "id": "1",
    "deviceName": "mydevice1"
  },
  {
    "description": "sample",
    "link": "mylink",
    "id": "",
    "deviceName": ""
  }
]

let _res = data.map(ele => {
  if (ele.deviceName == "") {

    ele.deviceName = "novaluespecified"
  }
  return ele;

})


console.log(_res)

// filtering out device1


var data2 = [{
    "description": "sample",
    "link": "mylink",
    "id": "1",
    "deviceName": "mydevice1"
  },
  {
    "description": "sample",
    "link": "mylink",
    "id": "1",
    "deviceName": "mydevice1"
  },
  {
    "description": "sample",
    "link": "mylink",
    "id": "",
    "deviceName": ""
  }
]

let _res1 = data2.filter(ele => {

  if (ele.deviceName.indexOf('device1') == -1) {
    return ele;
  }



})
console.log(_res1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...