【发布时间】: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