Передать массив значений и фильтрацию объекта в JavaScript - PullRequest
1 голос
/ 08 апреля 2019

Я хотел бы знать, как фильтровать объект, передавая массивы значений в JavaScript

Как передать массив значений в качестве аргументов и отфильтровать объект, используя JavaScript. На основе send и receive с id получите значение объекта в javascript.

для id trans, если send (in) равно bank и receive (out) равно bank, для фонда id, если send (вход) равен credit и receive (выход) равен bank и для id insta, если send (in) равно debit и receive (out) равно bank, получить результат obj

var send=['bank', 'credit', 'debit'];
var receive = ['bank', 'bank', 'bank'];
var id=['trans', 'fund', 'insta'];
var result = getSample(sample,send, receive, id);


I have tried but got stuck
function getSample(sample,sn, rcn, id){
  const temp = sample.map(e => Object.entries(e).map(([k, val]) => val)).flat(3)
    var selectval= temp.filter(x=>x.in==scn && x.out==rcn && x.id == id);
   return selectval;
}

var sample =
  [{
    "btob": [{
      "id": "trans",
      "in": "bank",
      "out": "bank",
      "value": 10,
    },{
      "id": "fund",
      "in": "bank",
      "out": "bank",
      "value": 10
    },{
      "id": "insta",
      "in": "bank",
      "out": "bank",
      "value": 10
    }],
    "ctob": [{
      "id": "trans",
      "in": "credit",
      "out": "bank",
      "value": 20
    },{
      "id": "fund",
      "in": "credit",
      "out": "bank",
      "value": 10
    },{
      "id": "insta",
      "in": "bank",
      "out": "bank",
      "value": 10
    }],
   "dtob": [{
      "id": "trans",
      "in": "debit",
      "out": "bank",
      "value": 20
    },{
      "id": "fund",
      "in": "debit",
      "out": "bank",
      "value": 10
    },{
      "id": "insta",
      "in": "debit",
      "out": "bank",
      "value": 10
    }]
}]

Expected Output:
  result=[
    {
      "id": "trans",
      "in": "bank",
      "out": "bank",
      "value": 10,
    },
    {
      "id": "fund",
      "in": "credit",
      "out": "bank",
      "value": 10
    },
    {
      "id": "insta",
      "in": "debit",
      "out": "bank",
      "value": 10
    }
  ]



1 Ответ

0 голосов
/ 08 апреля 2019

Просто объявите идентификатор массива, отправьте, получите и сэмплируйте, затем запустите приведенный ниже код.

const temp = sample.map(e => Object.entries(e).map(([k, val]) => val)).flat(3);
var jointArray = id.map((currentValue, index) => {
  return id[index]+"-"+send[index]+"-"+receive[index];
});
var result = temp.filter(function(item) { 
   return ( jointArray.indexOf(item.id+"-"+item.in+"-"+item.out)!=-1  ) 
});
console.log(result);  

вот js fiddle https://jsfiddle.net/qcxntpfy/

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