在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ JS 對數組的操作

JS 對數組的操作

let a = [['1010','20','10'], ['3010','40','20']]
let b = [
{
  KUNN2:"0000000001",
  PARVW_TEXT:"收款方",
  VKORG:'3010',
  VTWEG:'40',
  VSBED:'20'
},
 {
  KUNN2:"0000000002",
  PARVW_TEXT:"收款方",
  VKORG:'1010',
  VTWEG:'20',
  VSBED:'10'
},
{
  KUNN2:"0000000003",
  PARVW_TEXT:"收款方",
  VKORG:'4100',
  VTWEG:'30',
  VSBED:'10'
},
{
  KUNN2:"0000000004",
  PARVW_TEXT:"收款方",
  VKORG:'3010',
  VTWEG:'40',
  VSBED:'20'
},
{
 KUNN2:"0000000005",
 PARVW_TEXT:"收款方",
 VKORG:'1010',
 VTWEG:'20',
 VSBED:'10'
 }
]

如上面2面2個數組,數組a是匹配項,隨后我想要的結果是

let c = [[{
KUNN2:"0000000002",
PARVW_TEXT:"收款方",
VKORG:'1010',
VTWEG:'20',
VSBED:'10'
},{
KUNN2:"0000000005",
PARVW_TEXT:"收款方",
VKORG:'1010',
VTWEG:'20',
VSBED:'10'
}],[{
KUNN2:"0000000001",
PARVW_TEXT:"收款方",
VKORG:'3010',
VTWEG:'40',
VSBED:'20'
},{
KUNN2:"0000000004",
PARVW_TEXT:"收款方",
VKORG:'3010',
VTWEG:'40',
VSBED:'20'
}]]

希望各位大佬指教,不甚感激。### 題目描述

題目來源及自己的思路

相關代碼

// 請把代碼文本粘貼到下方(請勿用圖片代替代碼)

你期待的結果是什么?實際看到的錯誤信息又是什么?

回答
編輯回答
拮據

1.你給的a數組,第一個值應該是 1010對吧,
2.a數組的值 ,我能過目測是分別與VKORG,VTWEG,VBED三個值相對應的,有沒有不對應的需求,如果是對應的,哪就按下面代碼來就可以




let a = [['1010','20','10'], ['3010','40','20']]
let b = [
{
  KUNN2:"0000000001",
  PARVW_TEXT:"收款方",
  VKORG:'3010',
  VTWEG:'40',
  VSBED:'20'
},
 {
  KUNN2:"0000000002",
  PARVW_TEXT:"收款方",
  VKORG:'1010',
  VTWEG:'20',
  VSBED:'10'
},
{
  KUNN2:"0000000003",
  PARVW_TEXT:"收款方",
  VKORG:'4100',
  VTWEG:'30',
  VSBED:'10'
},
{
  KUNN2:"0000000004",
  PARVW_TEXT:"收款方",
  VKORG:'3010',
  VTWEG:'40',
  VSBED:'20'
},
{
 KUNN2:"0000000005",
 PARVW_TEXT:"收款方",
 VKORG:'1010',
 VTWEG:'20',
 VSBED:'10'
 }
]

let c= b.filter((item)=>{
  let index = a.find((arr)=>{
    return arr[0]=== item.VKORG && arr[1]===item.VTWEG && arr[2]===item.VSBED
  })
  if(index){
    return item
  }
})

console.log(c)

第二種方法,判斷只要obj里的值含有 數組里的值就返回,從你的回復里看到,a數組的子數組個數也不確定,但是問題 如果存在以下數據,也會被返回

{
  KUNN2:"0000000001",
  PARVW_TEXT:"收款方",
  VKORG:'10',
  VTWEG:'1010',
  VSBED:'20'
} 
用下面的方法,這樣的數據也是匹配的。

let d = a.map((keys)=>{
  let res = b.filter((item)=>{
    let objarr = Object.values(item)
    let oldlength = objarr.length
    //以下代碼用于判斷數組是否為另一個數組的子集,采用的方法是把兩個數組合并,再去重后的數組長度等于原數組長度,則判定子集匹配。
    let newarr = [...objarr,...keys]
    let newlength =[...new Set(newarr)].length
    if(oldlength === newlength){
      return item
    }
  })
  return res
  
})
2017年6月14日 11:25
編輯回答
初念

應該是你想要的吧

let a = [['1010', '20', '10'], ['3010', '40', '20']]
let b = [
    {
        KUNN2: "0000000001",
        PARVW_TEXT: "收款方",
        VKORG: '3010',
        VTWEG: '40',
        VSBED: '20'
    },
    {
        KUNN2: "0000000002",
        PARVW_TEXT: "收款方",
        VKORG: '1010',
        VTWEG: '20',
        VSBED: '10'
    },
    {
        KUNN2: "0000000003",
        PARVW_TEXT: "收款方",
        VKORG: '4100',
        VTWEG: '30',
        VSBED: '10'
    },
    {
        KUNN2: "0000000004",
        PARVW_TEXT: "收款方",
        VKORG: '3010',
        VTWEG: '40',
        VSBED: '20'
    },
    {
        KUNN2: "0000000005",
        PARVW_TEXT: "收款方",
        VKORG: '1010',
        VTWEG: '20',
        VSBED: '10'
    }
]

const result = [];

for (const aItem of a) {
    const bFilter = b.filter(({ VKORG, VTWEG, VSBED }) => VKORG === aItem[0] && VTWEG === aItem[1] && VSBED === aItem[2]);
    bFilter.length > 0 && result.push(bFilter);
}
console.log(result);
2017年10月27日 05:39