javascript-Node.js objectArray
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-Node.js objectArray,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2168字,纯文字阅读大概需要4分钟。
内容图文
在我的节点应用程序中,我必须从另一个对象数组构造一个对象数组.
考虑我的对象数组为…
levels: [
{
country_id: 356,
country_name: "aaa",
level0: "bbbb",
level1: "cccc",
level2: "dddd",
level3: "eeee",
level4: "fffff"
},
{
country_id: 356,
country_name: "aaaa",
level0: "bbbb",
level1: "cccc",
level2: "dddd",
level3: "eeee",
level4: "gggg"-----------> here is the differnce..
}
]
如果对于相同的id,上述任何1个不同,我必须将其设为一个数组,并且应该是1个id的单一条目.
所以我想要的是:
levels: [
"356":{
country_name: "aaa",
level0: "bbbb",
level1: "cccc",
level2: "dddd",
level3: "eeee",
level4: ["fffff","gggg"]
}]
但是我找不到正确的方法.请帮助我解决这个问题.谢谢.
解决方法:
注意:请注意,该程序假定在关卡中只有两次重复.
var obj = {
levels: [{
country_id: 356,
country_name: "aaa",
level0: "bbbb",
level1: "cccc",
level2: "dddd",
level3: "eeee",
level4: "fffff"
}, {
country_id: 356,
country_name: "aaa",
level0: "bbbb",
level1: "cccc",
level2: "dddd",
level3: "eeee",
level4: "gggg"
}]
};
obj.levels = obj.levels.reduce(function(result, current) {
result[current.country_id] = result[current.country_id] || {};
var temp_result = result[current.country_id];
for (var key in current) {
if (temp_result.hasOwnProperty(key) === false) {
temp_result[key] = current[key];
} else if (temp_result[key] !== current[key]) {
temp_result[key] = [temp_result[key], current[key]];
}
}
return result;
}, {})
console.log(obj);
输出量
{ levels:
{ '356':
{ country_id: 356,
country_name: 'aaa',
level0: 'bbbb',
level1: 'cccc',
level2: 'dddd',
level3: 'eeee',
level4: ['fffff', 'gggg'] } } }
这是一个通用的解决方案,
obj.levels = obj.levels.reduce(function(result, current) {
result[current.country_id] = result[current.country_id] || {};
var temp_result = result[current.country_id],
toString = Object.prototype.toString;
for (var key in current) {
if (temp_result.hasOwnProperty(key) === false) {
temp_result[key] = current[key];
} else if (toString.call(temp_result[key]) === "[object Array]") {
if (temp_result[key].every(function(currentItem) {
return currentItem !== current[key];
})) {
temp_result[key].push(current[key]);
}
} else if (temp_result[key] !== current[key]) {
temp_result[key] = [temp_result[key], current[key]];
}
}
return result;
}, {});
内容总结
以上是互联网集市为您收集整理的javascript-Node.js objectArray全部内容,希望文章能够帮你解决javascript-Node.js objectArray所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。