从删除/复制的对象中提取属性,然后分配给其他对象
Extract properties from deleted/duplicated objects then assign to other objects
我需要一点帮助,我有这个数组:
[
{Code:13938, Country:699, Name:"Crocs", codeProduct:1}
{Code:13952, Country:699, Name:"Polo Club", codeProduct:14}
{Code:13952, Country:699, Name:"Polo Club", codeProduct:1}
{Code:13952, Country:699, Name:"Polo Club", codeProduct:3}
{Code:13953, Country:699, Name:"OZ", codeProduct:12}
....
]
我需要转换成这个:
[
{Code:13938, Country:699, Name:"Crocs", codeProduct:1}
{Code:13952, Country:699, Name:"Polo Club", codeProduct:"14, 1, 3" }
{Code:13953, Country:699, Name:"Polo Club", codeProduct:12}
]
删除重复的对象并获取这些被删除对象的值没有问题。
var prodArray = [];
function uniq_fast(a) {
var seen = {};
var out = [];
var len = a.length;
var j = 0;
for(var i = 0; i < len; i++) {
var item = a[i].Codigo;
if(seen[item] !== 1) {
seen[item] = 1;
out[j++] = a[i];
}else{
prodArray.push({Code:item, codeProduct:a[i].TipoProductoCodigo});
}
}
return out;
}
返回一个没有重复值的新对象数组,并将已删除对象的属性添加到新数组prodArray
。
// out return this:
[
{Code:13938, Country:699, Name:"Crocs", codeProduct:1}
{Code:13952, Country:699, Name:"Polo Club", codeProduct:"14, 1, 3" }
{Code:13953, Country:699, Name:"Polo Club", codeProduct:12}
)
和prodArr
返回:
[
{Code:13952, codeProduct:1}
{Code:13952, codeProduct:3}
]
但是我如何将prodArray
中的属性设置为保存无重复对象的新数组?
希望我已经说清楚了
您可以使用散列表作为Code
的引用。
var data = [{ Code: 13938, Country: 699, Name: "Crocs", codeProduct: 1 }, { Code: 13952, Country: 699, Name: "Polo Club", codeProduct: 14 }, { Code: 13952, Country: 699, Name: "Polo Club", codeProduct: 1 }, { Code: 13952, Country: 699, Name: "Polo Club", codeProduct: 3 }, { Code: 13953, Country: 699, Name: "OZ", codeProduct: 12 }],
grouped = [];
data.forEach(function (a) {
if (!this[a.Code]) {
this[a.Code] = { Code: a.Code, Country: a.Country, Name: a.Name, codeProduct: a.codeProduct };
grouped.push(this[a.Code]);
return;
}
this[a.Code].codeProduct += ', ' + a.codeProduct;
}, Object.create(null));
console.log(grouped);
我会尽我最大的努力回答这个问题,虽然我并不完全理解你想要做什么…
所以你在prodArray
中有重复的值,很好。现在您想要将它们放回到您刚刚删除它们的数组中?确定。要将一个元素附加到数组的末尾,可以使用push方法。
我假设你赶上的事情是抓住那些缺失的JSON属性,Country
和Name
,并将它们添加回prodArray
中的元素。但由于我们知道Code
是相同的,我们可以使用它来找到"缺失"的值。下面是我的做法,假设a
是你的原始数组:
for (var i in prodArray) {
// find the duplicate in the orginal array
for (var j in a) {
if (a[j].Code == prodArray[i].Code) {
// found it, now append into a
a.push(a[j]);
break;
}
}
}
我接近了吗?
相关文章:
- 将值输入到对象,然后该对象推送到数组
- 如何在鼠标悬停时将对象从起始位置移动到结束位置,然后在鼠标悬停后再次移动
- 搜索包含值的json对象键,然后取消设置
- jQuery Deferred and promise-错误:对象没有't支持属性或方法'然后'
- 使用函数for循环遍历对象以更改值,然后返回结果
- 尝试将对象添加到存储阵列中,然后通过循环将它们写出
- 将普通的 PNG 图像转换为 JSON 数据,然后存储到对象
- 存储多个Json对象,然后对其进行排序
- 我想使用replace函数扫描json对象,然后用字符串替换匹配的单词
- 如何在javascript中生成数组对象的数组,然后将其传递给java
- 从数组中快速打印对象,然后循环
- 根据属性值创建多个对象数组,然后遍历每个数组
- 找到对象中值最高的键,然后将其发布到innerHTML中
- 将JSON字符串转换为JavaScript对象,然后创建一个HTML表
- 无法更新 Javascript 对象文本中的值,然后更新页面
- 复制对象,然后更新 JSON 对象中的值
- 使用 .push 对对象进行分组,然后输出到字符串
- 在函数中创建 jQuery 对象然后不使用它是否会产生内存泄漏
- 访问'这'promise回调中的对象(然后)
- 声明一个javascript对象.然后使用jQuery和Ajax设置属性