我需要帮助一个可以在JavaScript中将数组A转换为数组B的函数
数组A:
[ { id: 'U125H069G', code: 'C13LKL4V6' },
{ id: 'U13MPMLA3', code: 'C13LKL4V6' },
{ id: 'U125H069G', code: 'C125H083C' },
{ id: 'U13MPMLA3', code: 'C125H083C' },
{ id: 'U125H069G', code: 'C123Q00D9' },
{ id: 'U13MPMLA3', code: 'C123Q00D9' },
{ id: 'U125H069G', code: 'C13LM1VUP' } ]
数组B:
[{'id':'U125H069G', codes: ['C13LKL4V6','C125H083C','C123Q00D9', 'C13LM1VUP]},
{'id':'U13MPMLA3': codes: ['C13LKL4V6','C125H083C','C123Q00D9']}]
答案 0 :(得分:1)
您设计的对象应该是
{'id':'U125H069G', codes: ['C13LKL4V6','C125H083C','C123Q00D9', 'C13LM1VUP']}
而不是
{'id':'U125H069G', codes: {'C13LKL4V6','C125H083C','C123Q00D9', 'C13LM1VUP'}}
试试这个
var temp = [];
data.forEach(function(x) {
if (temp.map(function(y) {
return y.id
}).indexOf(x.id) < 0) {
var codes = data.filter(function(z) {
return z.id == x.id;
}).map(function(z) {
return z.code;
});
temp.push({
id: x.id,
codes: codes
});
}
})
console.log(temp);
的 DEMO
强>
答案 1 :(得分:1)
通过forEach运行它并在对象图中存储唯一ID。
var input = [
{ id: 'U125H069G', code: 'C13LKL4V6' },
{ id: 'U13MPMLA3', code: 'C13LKL4V6' },
{ id: 'U125H069G', code: 'C125H083C' },
{ id: 'U13MPMLA3', code: 'C125H083C' },
{ id: 'U125H069G', code: 'C123Q00D9' },
{ id: 'U13MPMLA3', code: 'C123Q00D9' },
{ id: 'U125H069G', code: 'C13LM1VUP' }
];
var idMap={};
var output =[];
input.forEach(function(value, index, arr) {
if(!idMap[value.id]) {
idMap[value.id] = { id: value.id, codes:[value.code]};
output.push(idMap[value.id]);
}
else {
idMap[value.id].codes.push(value.code);
}
});
console.log(output);
document.getElementById("output").innerHTML = JSON.stringify(output);
/*[{'id':'U125H069G', codes: {'C13LKL4V6','C125H083C','C123Q00D9', 'C13LM1VUP}},
{'id':'U13MPMLA3': codes: {'C13LKL4V6','C125H083C','C123Q00D9'}}]
*/
<textarea id="output" rows="10" cols=80>
</textarea>
答案 2 :(得分:1)
基本上只是循环遍历它们,当你找到一个新的id时向B添加一个对象,或者如果id已经存在,则在条目数组中添加一个条目。
int[] arr = {3, 2, 0, 5, 3};
HashMap<Integer, String> h = new HashMap<Integer, String>() {{
put(0,"This is my third sentence.");
put(3,"This is my first sentence.");
put(5,"This is my forth sentence.");
put(2,"This is my second sentence.");
}};
&#13;