【问题标题】:Compare Arrays to Object Properties in Javascript将数组与 Javascript 中的对象属性进行比较
【发布时间】:2014-10-17 15:11:06
【问题描述】:

如何在 JavaScript 中将数组与带有键/值对(属性:值)的对象进行比较?

如果它们只是数组,我会这样做:

                       for (var l = 0; l < vm.statesNotAvailable.length; l++)
                        {
                            for (var m = 0 ; m < vm.statesNotAvailable.length; m++)
                            {
                                //Maps the values to their keys inside  vm.statesArray
                                if (vm.statesNotAvailable[l] == vm.statesWithCodes[m]) {

                                    delete vm.statesWithCodes.m;

                                }
                            }
                        }

如果它们都是对象,我会这样做:

          for (var key in object) {
                            if (vm.statesNotAvailable.hasOwnProperty(key)) {
                                //Now, object[key] is the current value
                                if (vm.statesNotAvailable[key] === vm.statesArray[key] )
                                    delete object[key];
                            }
                        }

但是,这些都不适合我。那么,尽管索引(位置),我如何从我的对象中删除与数组中的值相交的键?

【问题讨论】:

  • 就像我说的:我正在尝试将数组中元素的值与对象中的属性值进行比较。
  • 它们不是同一个数据结构,不。数组没有属性,它们只是在元素中有带有“东西”的索引(可能是值,可能是数组,可能是对象,可能是等等)。然而,对象将具有键/值对方面的属性(即 vm.statesWithCodes.Alabama 是带有值“AL”的键 - 我将状态映射为属性,将 2 位状态名称作为值该特定属性)。这是否有助于阐明数组和对象之间的区别是什么?
  • 你有一个对象的(键,值)。您是否只是想查看该值是否在数组中的 ANYWHERE 中,如果是,您想从对象中删除它吗?
  • 发布您尝试比较的两种数据结构的示例也会有所帮助。
  • vm.statesNotAvailable 2014-10-17 10:31:19.855 [Array[1]0: "Alabama"length: 1__proto__: Array[0], Array[1]0: "Alaska"length : 1__proto__: ... vm.statesWithCodes 2014-10-17 10:31:23.635Object {阿拉巴马州:“AL”,阿拉斯加州:“AK”,亚利桑那州:“AZ”,阿肯色州:“AR”,加利福尼亚州:“CA” …}

标签: javascript arrays object properties


【解决方案1】:

解决方法如下:

                        //Iterates through properties of object
                        for (var property in vm.statesWithCodes)
                        {
                            //Iterates through indices of array
                            for (var m = 0 ; m < vm.statesNotAvailable.length; m++)
                             {
                                //Compares keys of object w/ values of array
                                if (property == vm.statesNotAvailable[m])
                                {
                                    //Deletes the property sequentially
                                    delete vm.statesWithCodes[property];
                                }
                            }
                        }

【讨论】:

    猜你喜欢
    • 2016-10-25
    • 2022-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    相关资源
    最近更新 更多