首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >javascript 2D数组vlaue交换

javascript 2D数组vlaue交换
EN

Stack Overflow用户
提问于 2021-07-05 13:43:48
回答 2查看 30关注 0票数 0

我想要比较两个数组,并用相同的属性值替换数组的值。

代码语言:javascript
运行
复制
let first_array =[{ model: 'aa', size: '85(XS)', count: 200, number: '10-2' },{ model: 'bb', size: '105(XL)', count: 150, number: '' },{ model: 'cc', size: '95(M)', count: 100, number: '9-2' },{ model: 'dd', size: '85(XS)', count: 50, number: '' }]

let second_array = [{ model: 'aa', size: '85(XS)', count: 1, number: '' },{ model: 'bb', size: '105(XL)', count: 1, number: '' },{ model: 'cc', size: '95(M)', count: 2, number: '' },{ model: 'dd', size: '85(S)', count: 3, number: '' },{ model: 'dd', size: '80(XS)', count: , number: '' }]

假设有两个数组。比较'a‘和'b’数组,与'model‘相同的'size’将'a‘数组的计数值插入到'b’数组的计数值中,错误的被标记为null。

这就是我想要的。

代码语言:javascript
运行
复制
let vlaue = [{ model: 'aa', size: '85(XS)', count: 200, number: '10-2' },{ model: 'bb', size: '105(XL)', count: 150, number: '' },{ model: 'cc', size: '95(M)', count: 100, number: '9-2' },{ model: 'dd', size: '85(XS)', count: 50, number: '' }]

这就是我试过的代码。

代码语言:javascript
运行
复制
for (var j = 0; j<second_array.length;j++){

  for(var i = 0; i < first_array.length ;i++){
    var count = false 
    
    if(second_array[j]["model"]+second_array[j]["size"] === first_array[i]){
       
       count = true

    }else{

       count = false

    }

    if(count == true){
        if(objectdata[first_array[i]]["count"] === 0){
          second_array[j]["count"] = ""
          second_array[j]["number"] = ""
        }else{
            second_array[j]["count"] = objectdata[first_array[i]]["count"];
             second_array[j]["number"] = objectdata[first_array[i]]["number"];
        }
        
       
        break
    }else{
        second_array[j]["count"] = ""
        second_array[j]["number"] = ""
    }

}}

EN

回答 2

Stack Overflow用户

发布于 2021-07-05 14:40:31

代码语言:javascript
运行
复制
  let first_array =[{ model: 'aa', size: '85(XS)', count: 200, number: '10-2' },{ model: 'bb', size: '105(XL)', count: 150, number: '' },{ model: 'cc', size: '95(M)', count: 100, number: '9-2' },{ model: 'dd', size: '85(XS)', count: 50, number: '' }]

  let second_array = [{ model: 'aa', size: '85(XS)', count: 1, number: '' },{ model: 'bb', size: '105(XL)', count: 1, number: '' },{ model: 'cc', size: '95(M)', count: 2, number: '' },{ model: 'dd', size: '85(S)', count: 3, number: '1' }]
 
  let value=[]; 

  for(let i = 0 ; i<first_array.length ; i++){
  
  value.push({
  name:first_array[i].model ? first_array[i].model :second_array[i].model,
  size: first_array[i].size ?first_array[i].size :second_array[i].size,
  count: first_array[i].count ?first_array[i].count :second_array[i].count,
  number: first_array[i].number ?first_array[i].number :second_array[i].number,
  })
  
}
console.log(value)

代码语言:javascript
运行
复制
  let first_array =[{ model: 'aa', size: '85(XS)', count: 200, number: '10-2' },{ model: 'bb', size: '105(XL)', count: 150, number: '' },{ model: 'cc', size: '95(M)', count: 100, number: '9-2' },{ model: 'dd', size: '85(XS)', count: 50, number: '' }]

  let second_array = [{ model: 'aa', size: '85(XS)', count: 1, number: '' },{ model: 'bb', size: '105(XL)', count: 1, number: '' },{ model: 'cc', size: '95(M)', count: 2, number: '' },{ model: 'dd', size: '85(S)', count: 3, number: '1' }]
 
  let value=[]; 

  for(let i = 0 ; i<first_array.length ; i++){
  
  value.push({
  name:first_array[i].model ? first_array[i].model :second_array[i].model,
  size: first_array[i].size ?first_array[i].size :second_array[i].size,
  count: first_array[i].count ?first_array[i].count :second_array[i].count,
  number: first_array[i].number ?first_array[i].number :second_array[i].number,
  })
  
}
console.log(value)
票数 0
EN

Stack Overflow用户

发布于 2021-07-05 15:07:46

代码语言:javascript
运行
复制
let first_array = [{
  model: 'aa',
  size: '85(XS)',
  count: 200,
  number: '10-2'
}, {
  model: 'bb',
  size: '105(XL)',
  count: 150,
  number: ''
}, {
  model: 'cc',
  size: '95(M)',
  count: 100,
  number: '9-2'
}, {
  model: 'dd',
  size: '85(XS)',
  count: 50,
  number: ''
}]
let second_array = [{
  model: 'aa',
  size: '85(XS)',
  count: 1,
  number: ''
}, {
  model: 'bb',
  size: '105(XL)',
  count: 1,
  number: ''
}, {
  model: 'cc',
  size: '95(M)',
  count: 2,
  number: ''
}, {
  model: 'dd',
  size: '85(S)',
  count: 3,
  number: ''
}, {
  model: 'dd',
  size: '80(XS)',
  count: '',
  number: ''
}]
let desired = [{
    model: 'aa',
    size: '85(XS)',
    count: 200,
    number: '10-2'
  },
  {
    model: 'bb',
    size: '105(XL)',
    count: 150,
    number: ''
  },
  {
    model: 'cc',
    size: '95(M)',
    count: 100,
    number: '9-2'
  },
  {
    model: 'dd',
    size: '85(XS)',
    count: 50,
    number: ''
  }
]

const dict = second_array.reduce((map, {
  model,
  size,
  count,
  number
}) => ({
  ...map,
  [`${model}${size}`]: {
    count,
    number
  }
}), {})

const newArray = first_array.map(({
  model,
  size,
  count,
  number
}) => ({
  model,
  size,
  count: count ?? dict[`${model}${size}`]?.count,
  number: number ?? dict[`${model}${size}`]?.number,
}))

// output:
console.log(newArray)
// desired:
console.log(desired)
// match:
console.log(JSON.stringify(newArray) === JSON.stringify(desired))

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68251190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档