javascript - 对象的Array_map?

标签 javascript

我想过滤包含对象的对象,以仅获取包含具有特定值的数组的对象。

这是对象:

Object
-Object[0]
--Title
--Date
--Specs [Array]
---- [0] Name: "Power"
---- [0] Value: 5
---- [1] Name: "Weight"
---- [1] Value: 100
-Object[1]
--Title
--Date
--Specs [Array]
---- [0] Name: "Height"
---- [0] Value: 100
---- [1] Name: "Weight"
---- [1] Value: 100

因此,我想要一个仅包含对象的对象,其中 specs 数组包含一个 Name“Power”的条目。

我尝试用 array_map 解决这个问题,如下所示:

         return this.items.map((obj) => {
             let valObj = obj.specs.filter(function (elem) {
                 if (elem.Name == "Power") return elem.Value;
             });
             if (valObj.length > 0) {
                 return obj;
             }
         });

但不幸的是 array_map 只适用于数组,正如名称所示;-)

那么:有没有好的方法来解决这个问题呢?

更新:

创建了一个工作代码,但可能不是很优雅;-)

itemsWithPower: function() {
                var items  = items;
                var list = [];

                var result = Object.keys(items).map(function(key) {
                    return items[key].Specs.filter(function(elem) {
                        if (elem.Name === "Power") list.push(items[key]);
                    });
                });             
                console.log(list);
            }

最佳答案

Array.map 不会迭代对象,您必须首先获取一个数组,例如对象键,例如

var items  = this.items;
var result = Object.keys(items).map(function(key) {
    return items[key].filter(function(obj) {
        return obj.Specs.Name === "Power";
    });
});

关于javascript - 对象的Array_map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42025185/

相关文章:

javascript - 如何调用嵌套在 JQuery 插件中的函数?

javascript - 在 Javascript 中表示 DAG 的数据结构

javascript - 如何将 Google 电子表格中的多个单元格中的文本提取到网站上,每个单元格中的每个单元格都位于不同的 <p> 标记中?

javascript - Google Maps API - Map.data 范围问题

javascript - jquery Accordion 切换的加减号

javascript - WordPress 滚动评论

javascript - 将 s3 对象数据放入数组 - Node

javascript - Ember Web 应用程序 - 显示 JSON 数据时出现问题 - 开放天气 map API

javascript - 将 HTML 添加到页面并访问 Jquery 以及用户当前选项卡的正确方法?

javascript - <a> onload 的替代方案是什么?