gpt4 book ai didi

javascript - 深度扩展,扩展到对象数组?

转载 作者:行者123 更新时间:2023-11-28 19:21:05 24 4
gpt4 key购买 nike

我想知道这样的事情是否可能 - 一个查看对象数组的扩展

假设我有:

 myObj = [
{"name" : "one", "test" : ["1","2"]},
{"name" : "two", "test" : ["1","2"]}
]

我正在尝试扩展到这一点

 {"name" : "one" , "test" : ["1","3"]}

所以结果是 -

 myObj = [
{"name" : "one", "test" : ["1","2", "3"]},
{"name" : "two", "test" : ["1","2"]}
]

这就像扩展一样,如果那里没有对象,它只会创建一个。这样的事情可能吗?谢谢!

最佳答案

看起来你想要这样的东西:

function deepSetMerge(base, next) {
var dataEntry = base.filter(function(it) {
return it.name === next.name;
})[0];

if (dataEntry) {
var diff = next.test.filter(function(it) {
return dataEntry.test.indexOf(it) === -1;
});
dataEntry.test = dataEntry.test.concat(diff).sort();
} else {
base.push(next);
}
}

var data = [{
"name": "one",
"test": ["1", "2"]
}, {
"name": "two",
"test": ["1", "2"]
}];

var add = {
"name": "one",
"test": ["1", "3"]
};

var obj = {
"name": "totally-unique",
"test": [1, 2, "nine", 17.0]
};

deepSetMerge(data, add);
deepSetMerge(data, obj);

document.getElementById('results').textContent = JSON.stringify(data);
<pre id="results"></pre>

此函数的工作原理是按名称查找现有条目(如果存在)。如果没有,我们只需将要合并的对象作为新条目推送即可。

如果该条目确实存在,请查找两组项目之间的差异,然后将它们连接到现有数组的末尾(并对结果进行排序)。

这对于您的数据结构来说非常具体,并不是世界上最灵活的解决方案,但希望能够很好地展示算法。

关于javascript - 深度扩展,扩展到对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28902650/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com