两个数组如何把数组不同的元素加入另外一个数组

var kk = [50,2,33,47,89,98]
var dd = [{y:2,w:3},{y:47,w:87},{y:98,w:87}]
for (var qq in kk) {
    for (var tt in dd) {
        
}
有两个数组我想把第二个数组组装成
[
{y:2,w:3},{y:47,w:87},{y:98,w:87},

 {y:50,w:""},{y:33,w:""},{y:89,w:""}    
]
这种的 试了好多次都不行。。求救
阅读 4.4k
5 个回答

你这规律很奇怪啊。
image.png

var kk = [50,2,33,47,89,98]
var dd = [{y:2,w:3},{y:47,w:87},{y:98,w:87}]
for(var i = 0; i < kk.length; i+=2){
    var y = kk[i]
    var w = kk[i+1]
    var item = dd[i>>1]
    console.log(y, w, item)
    Object.keys(item).forEach(v=>{
        if(y == item[v]) y = ''
        if(w == item[v]) w = ''
    })
    dd.push({y,w})
}
dd

首先找到dd中已有的y,然后循环kk判断元素是否存在dd中,不存在就push进去,并且把新的y保存起来,避免重复。

var kk = [50,2,33,47,89,98]
var dd = [{y:2,w:3},{y:47,w:87},{y:98,w:87}]
var temp = {};
dd.map(function(item) {
    temp[item.y] = 1;
});
kk.map(function(item){
    if (!temp[item]) {
        dd.push({y: item, w: ''});
        temp[item] = 1;
     }
});
var kk = [50,2,33,47,89,98]
var dd = [{y:2,w:3},{y:47,w:87},{y:98,w:87}]
let newArr = JSON.parse(JSON.stringify(dd));
const newKk = kk.map(item => {
    return {
        y: item,
        w: ''
    };
});
newKk.forEach(item => {
    if (!dd.some((every) => item.y === every.y)) newArr.push(item)
});

jsfiddle的demo链接:https://jsfiddle.net/liangxh/...

var s = new Set(dd.map(({y})=>y))
dd.concat(kk.filter(k => !s.has(k)).map(y => ({y, w: ''})))

image.png

        let h = dd
        kk.map(item => {
            if (dd.map(item1 => item1.y).indexOf(item) === -1)
                h.push({y: item, w: ""})
        })

这很简单鸭 遍历kk 把dd中没有的kk元素 放到dd里就行啦

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题