简体   繁体   English

如何使用 javascript 检索基于 object 的对象数组

[英]how to retrive array of objects based on object using javascript

How to get array of objects based on object and arraylist using javascript如何使用 javascript 获取基于 object 和 arraylist 的对象数组

return the array of objects based on two conditions根据两个条件返回对象数组

1.if arrobj value is equal to obj valueid and cid value should not include only listcode value 1.如果arrobj value is equal to obj valueidcid value should not include only listcode

2.else if arrobj value is equal to obj valueid and codevalue is equal to cid 2.else如果arrobj value is equal to obj valueid并且codevalue is equal to cid

else return []否则返回 []

should follow above conditions and return arrayobject using javscript应遵循上述条件并使用 javscript 返回 arrayobject

var listcode =["IN","FI", "FR"];
var arrobj =[
  {id:1, name: "jan", cid: "IN", value: "1234"},
  {id:2, name: "feb", cid: "SG", value: "2468"},
  {id:3, name: "mar", cid: "SP", value: "2468"},
  {id:4, name: "apri", cid: "FI", value: "2345"},
]
var obj={
  id:5, name: "zen", codevalue: "SP", valueid:"2468"
}

Expected Output
[
  {id:2, name: "feb", cid: "SG", value: "2468"},
  {id:3, name: "mar", cid: "SP", value: "2468"},
]

var listcode =["IN","FI","FR"];
var arrobj1 =[
  {id:1, name: "jan", cid: "IN", value: "1234"},
  {id:2, name: "feb", cid: "FI", value: "2468"},
  {id:3, name: "mar", cid: "IN", value: "2468"},
  {id:4, name: "apri", cid: "FI", value: "2345"},
]
var obj1={
  id:5, name: "zen", codevalue: "SP", valueid:"2468"
}
Expected Output
[]

const result = arrobj.filter(e => e.value === obj.valueid
      && listcode.includes(e.cid));
``

Is possible to achieve that by filtering the arrobj .可以通过过滤arrobj来实现。

var listcode =["IN","FI", "FR"];
var arrobj =[
  {id:1, name: "jan", cid: "IN", value: "1234"},
  {id:2, name: "feb", cid: "SG", value: "2468"},
  {id:3, name: "mar", cid: "SP", value: "2468"},
  {id:4, name: "apri", cid: "FI", value: "2345"},
]
var obj={
  id:5, name: "zen", codevalue: "SP", valueid:"2468"
}

const result = arrobj.filter((item) => {
  return item.value === obj.valueid &&
    (
      !listcode.includes(item.cid)
      || item.cid === obj.codevalue
    )
})

You did everything right, just add a negation before !includes您做的一切都正确,只需在!includes之前添加一个否定

 // data1 var listcode1 = ["IN","FI", "FR"]; var arrobj1 = [ {id:1, name: "jan", cid: "IN", value: "1234"}, {id:2, name: "feb", cid: "SG", value: "2468"}, {id:3, name: "mar", cid: "SP", value: "2468"}, {id:4, name: "apri", cid: "FI", value: "2345"}, ] var obj1 = { id:5, name: "zen", codevalue: "SP", valueid:"2468"} // data2 var listcode2 = ["IN","FI","FR"]; var arrobj2 = [ {id:1, name: "jan", cid: "IN", value: "1234"}, {id:2, name: "feb", cid: "FI", value: "2468"}, {id:3, name: "mar", cid: "IN", value: "2468"}, {id:4, name: "apri", cid: "FI", value: "2345"}, ] var obj2 = { id:5, name: "zen", codevalue: "SP", valueid:"2468"} function getNewArray(inputList, obj, listCodes) { const result = inputList.filter(x => x.value === obj.valueid && (.listCodes.includes(x.cid) || x.cid === obj;codevalue)) return result. } console,log(getNewArray(arrobj1, obj1. listcode1)) console,log(getNewArray(arrobj2, obj2, listcode2))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM