如何从对象文字数组中切片数组?

2024-05-01

我有这个数组,其中每个索引都包含一个对象文字。所有对象字面量都具有相同的属性。某些对象文字对于给定属性具有相同的值,我想创建一个包含only那些对象文字。

我的想法是对数组进行排序,并将其切片成一个新数组......

这是数组:

var arr = [];

arr[0] =
{
    country: "United States",
    num: 27
};

arr[1] =
{
    country: "Australia",
    num: 5
};

arr[2] =
{
    country: "United States",
    num: 7
};


因此,我想创建一个新数组,仅包含属性所在的对象country是“美国”。到目前为止,这是我的疯狂想法,但行不通:

function getNewArray(arr)
{
    var arr2 = [];

    for(var key in arr)
    {
        for(var i = 0; i < arr.length - 1; i++)
        {
            if(arr.hasOwnProperty(key) && arr[i].name == arr[i + 1].name)
            {
                    arr2[i] = arr.slice(key);
            }
        }
    }

    return arr2;
}

var arr3 = getNewArray(arr).sort();

“我想创建一个新数组,仅包含属性国家/地区为“美国”的对象”

这正是Array.filter() method https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter is for:

var filteredArray = arr.filter(function(val, i, a) {
                                  return val.country==="United States";
                    });

请注意,.filter()该方法在版本 9 之前的 IE 中不可用,但我上面链接到的 MDN 页面向您展示了如何实现它,因此阅读该页面本身应该可以回答您的问题。

另请注意,在问题的(非工作)代码中,您的两个for循环基本上彼此做相同的事情,因为它们都在迭代arr,所以这样嵌套它们是没有意义的。您不应该在数组上使用 for..in 循环,但如果您执行key值将是数字索引,它不会以某种方式获取存储在每个索引处的对象的属性。

EDIT:

“某些对象文字对于给定属性具有相同的值,我想创建一个仅包含这些对象文字的新数组。”

好的,重新阅读本文,我想您并不是真的想通过指定国家/地区来选择元素,您想为任何具有重复条目的国家/地区选择元素吗?因此,如果还有另外三个元素都包含“新西兰”,您需要选择它们此外到“美国”的?如果是这样,你可以这样做:

var countryCount = {},
    i;
for (i = 0; i < arr.length; i++)
    if (countryCount.hasOwnProperty(arr[i].country)
       countryCount[arr[i].country]++;
    else
       countryCount[arr[i].country] = 1;

var filteredArr = arr.filter(function(val, i, a) {
                      return countryCount[val.country] > 1;
                  });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从对象文字数组中切片数组? 的相关文章

随机推荐

  • TextWatcher.onTextChanged 被多次调用

    我已经阅读了有关此问题的一些主题 但找不到完整的答案 我有一个包含 3 行的 ListView 每行包含一个 TextView 和一个 EditText 以及一个扩展 BaseAdapter 的自定义适配器 这是适配器的 getView 函
  • 与 Java 7 相比,Java 8 ScriptEngine 的主要性能问题

    我有一个 Java 程序 使用 JDK 7u80 编译 它广泛使用了 JavaScript ScriptEngine JSR 223 我注意到 与 Java 7 运行时环境 JRE 7u80 相比 我的程序在 Java 8 运行时环境 JR
  • ReactJS React-pdf 错误“无法加载 PDF 文件。”经过一些尝试

    我创建了一个 React js 应用程序create react app我正在尝试react pdf查看 pdf 我遇到的问题是我的代码有时有效 有时无效 当我第一次加载应用程序时 pdf 总是加载得很好 但如果我访问网站上的其他链接 ur
  • 在广播接收器响应 Intent.ACTION_BATTERY_CHANGED 之前获取电池电量

    我的程序中有一个广播接收器 可以对电池电量做出反应 如下所示 private BroadcastReceiver mBatInfoReceiver new BroadcastReceiver Override public void onR
  • 表名或列名不能以数字开头?

    我尝试创建名为15909434 user语法如下 CREATE TABLE 15909434 user 这当然会产生错误 然后 在我尝试用谷歌进行一些研究后 我发现了一篇很好的文章here http www informit com art
  • WPF 基础知识:MVVM 的共享全局样式

    我正在尝试使用 MVVM 式的方法来进行 WPF 开发 我在 ViewModel 命名空间下有我的逻辑视图模型类 并且在 View 命名空间下有这些视图模型类的匹配样式 现在 我的视图信息位于 ResourceDictionary XAML
  • 通过 Fabric.js 推送 D3.js 输出以支持 IE8?

    我正在评估Fabric js http fabricjs com 作为替代拉斐尔 js http raphaeljs com 用于创建与 IE8 兼容的交互式可视化 IE8 不支持 SVG 或画布 不幸的是 IE8 支持是不可协商的 Rap
  • 在 Flask 中,如何在单击按钮时生成动态 URL?

    例如 现在如果我在表单元素中有两个按钮 当您单击其中任一按钮时 您将被定向到相应的配置文件
  • ld:文件是针对 Mac OS X 上不受支持的文件格式构建的

    我必须使用在其他 x64 86 计算机上编译的共享对象来构建一个项目 我有这个错误 cc std c11 Wall Werror Wextra pedantic I include src server c obj tftp o o bin
  • 在C中获取终端宽度?

    我一直在寻找一种从 C 程序中获取终端宽度的方法 我不断想出的是这样的东西 include
  • 仅在 RMarkdown 中引用作者/在文本引用中添加所有格

    我想引用 RMarkdown 中的一位作者在他的名字中添加所有格 的内容 但是 我找不到在没有出版年份的情况下引用作者或直接添加所有格的方法 s 它应该看起来像这样 在芬纳 2012 的书中 最小工作示例 对于 R 笔记本 title R
  • Java如何使用私钥文件而不是PEM来解密?

    使用 Java 和 Bouncy Castle 1 52 我可以使用以下代码通过 PEM 证书加载私钥 我还有一个相同的 PKCS8 格式的 private key 文件 直接使用private key文件而不是PEM的代码是什么 Stri
  • 了解 keras 中不同序列的 lstm 输入形状

    我对 keras 和 python 都很陌生 我有一个具有不同序列长度的时间序列数据集 例如第一个序列是 484000x128 第二个序列是 563110x128 等 我已将序列放入 3D 数组中 我的问题是如何定义输入形状 因为我很困惑
  • Spring 3.1 和 JPA 2 没有正在进行的事务异常

    我已经这样做了几个星期了 我已经尝试过 eclipselink 现在只是普通的 JPA 我不断遇到同样的问题 每次我尝试刷新实体管理器时 都会收到 javax persistence TransactionRequiredException
  • 从全日历中获取选定的日期

    我将日历添加到我的 asp net mvc 2 应用程序中here http arshaw com fullcalendar 我想选择参加活动的选定日期 我怎样才能获得选定的日期 我还想将此日期和相应的事件保存到数据库中 这还怎么办 设置插
  • 如何使用 C 将带有 2 个变量的 IF 语句转换为 switch 函数?

    我有一个 IF 语句 我想将其转换为 Switch 语句 但它有 2 个变量 在C上可以实现吗 这是一个石头 剪刀 布的游戏 R代表石头 P代表布 S代表剪刀 char play1 play2 printf nPlayer 1 Enter
  • 使用异步函数等待 onclick 的用户输入

    我是异步新手 也许只是不了解基础知识 但我试图通过调用弹出模式并等待用户提交数据的异步函数来等待来自 onclick 的用户输入 在找到一两个甚至提到使用异步等待页面事件的来源后 这对我的特定任务并不是特别有帮助 我想出了这个 asnyc
  • 如何将 Netbeans 项目导入 Eclipse

    我想将我的 NetBeans 项目转移到 Eclipse 这是一个网络应用程序项目 我将 war 文件导入到 Eclipse 中 但无法获取 Java 文件 并且 war 文件给了我很多错误 导入整个项目的最佳方式是什么 另一种简单的方法如
  • Togglz 我的 SpringBoot 的 Yml/Yaml 配置不起作用

    尝试使用 Togglz 创建功能切换 在我的应用程序中进行了以下配置 代码 bootstrap yml togglz enabled true features FEATURE ONE true 功能枚举类 public enum AppF
  • 如何从对象文字数组中切片数组?

    我有这个数组 其中每个索引都包含一个对象文字 所有对象字面量都具有相同的属性 某些对象文字对于给定属性具有相同的值 我想创建一个包含only那些对象文字 我的想法是对数组进行排序 并将其切片成一个新数组 这是数组 var arr arr 0