在javascript中过滤对象对象(过滤还是减少?)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在javascript中过滤对象对象(过滤还是减少?),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1587字,纯文字阅读大概需要3分钟。
内容图文
过滤或减少对象的最佳做法是什么?我会通过for循环完成这个并创建一个新数组,但是要知道你可以通过JavaScript中的filter属性以某种方式实现它吗?
var myObject = [
{dimensions: [451, 255], margins: [0, 2, 0, 29]},
{dimensions: [222, 390], margins: [0, 5, 0, 37]},
{dimensions: [333, 390], margins: [0, 8, 0, 37]}
];
我想分别过滤掉尺寸,第一个属性和第二个和第四个边距,数组中的属性具有:
var dimension = [ 451, 222, 333 ];
var margins = [ 2, 29, 5, 37, 8, 37 ];
此外,如果我过滤一个对象并更新这些变量,有没有办法将它们映射回去?或者我应该如下所示进行映射:
var dimension = [ a: 451, b: 222, c: 333];
var margins = [ a: [2, 29], b : [5, 37], c: [8, 37] ];
解决方法:
你可以使用reduce:
var myObject = [{
dimensions: [451, 255],
margins: [0, 2, 0, 29]
}, {
dimensions: [222, 390],
margins: [0, 5, 0, 37]
}, {
dimensions: [333, 390],
margins: [0, 8, 0, 37]
}];
var results = myObject.reduce(function(acc, item) {
acc.dimensions.push(item.dimensions[0]);
acc.margins.push(item.margins[1], item.margins[3]);
return acc;
}, { dimensions: [], margins: [] });
console.log(results); // {dimensions: Array[3], margins: Array[6]}
工作小提琴:https://jsfiddle.net/9ynez03c/
要映射回myObject:
var dimensions = results.dimensions;
var margins = results.margins;
var updateMyObject = function() {
myObject.forEach(function(item, i) {
item.dimensions[0] = dimensions[i];
item.margins[1] = margins[i * 2];
item.margins[3] = margins[i * 2 + 1];
})
};
updateMyObject();
这非常笨重.我不确定你是如何使用这些数据的,但有些东西告诉我你应该首先使用一个对象然后根据需要访问/更新属性而不是创建其他数组.
更新的新小提琴:https://jsfiddle.net/adrice727/g01s80qf/
内容总结
以上是互联网集市为您收集整理的在javascript中过滤对象对象(过滤还是减少?)全部内容,希望文章能够帮你解决在javascript中过滤对象对象(过滤还是减少?)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。