在javascript中,如何使用一个数组的内容将另一个数组的内容设置为true?

在javascript中,如何使用一个数组的内容将另一个数组的内容设置为true?,javascript,arrays,Javascript,Arrays,我有两个javascript数组。一个默认数组: propertyTypes = [ {key:'OFFICE', value:false}, {key:'RESIDENTIAL', value:false}, {key:'RETAIL', value:false}, {key:'INDUSTRIAL', value:false}, {key:'HOTEL', value:false} ]; 另一个数组如下所示: property_types: [

我有两个javascript数组。一个默认数组:

propertyTypes = [
    {key:'OFFICE', value:false},
    {key:'RESIDENTIAL', value:false},
    {key:'RETAIL', value:false},
    {key:'INDUSTRIAL', value:false},
    {key:'HOTEL', value:false}
];
另一个数组如下所示:

property_types: [
    {
        "type": "OFFICE"
    },
    {
        "type": "RETAIL"
    }
]
propertyTypes = [
    {key:'OFFICE', value:true},  // so this one should be true
    {key:'RESIDENTIAL', value:false},
    {key:'RETAIL', value:true},  // and this one
    {key:'INDUSTRIAL', value:false},
    {key:'HOTEL', value:false}
];
propertyTypes = [
{key:'OFFICE', value:false},
{key:'RESIDENTIAL', value:false},
{key:'RETAIL', value:false},
{key:'INDUSTRIAL', value:false},
{key:'HOTEL', value:false}
];

property_types= [
    {
        type: "OFFICE"
    },
    {
        type: "RETAIL"
    }
];

propertyTypes.forEach(function(pType) {
    for (index = 0; index < property_types.length; ++index) {
        if(pType.key==property_types[index].type){
            pType.value = true;
break;

        }
    }
});
现在,我想将第一个数组中的所有值设置为
true
,这些值作为类型出现在第二个数组中,以便第一个数组如下所示:

property_types: [
    {
        "type": "OFFICE"
    },
    {
        "type": "RETAIL"
    }
]
propertyTypes = [
    {key:'OFFICE', value:true},  // so this one should be true
    {key:'RESIDENTIAL', value:false},
    {key:'RETAIL', value:true},  // and this one
    {key:'INDUSTRIAL', value:false},
    {key:'HOTEL', value:false}
];
propertyTypes = [
{key:'OFFICE', value:false},
{key:'RESIDENTIAL', value:false},
{key:'RETAIL', value:false},
{key:'INDUSTRIAL', value:false},
{key:'HOTEL', value:false}
];

property_types= [
    {
        type: "OFFICE"
    },
    {
        type: "RETAIL"
    }
];

propertyTypes.forEach(function(pType) {
    for (index = 0; index < property_types.length; ++index) {
        if(pType.key==property_types[index].type){
            pType.value = true;
break;

        }
    }
});
我有一些关于使用某种双重嵌套循环的想法,但它们似乎都没有任何意义

有人知道我怎样才能合乎逻辑地做到这一点吗?欢迎所有提示

您可以使用来实现这一点。 map()方法创建一个新数组,其结果是对该数组中的每个元素调用提供的函数

试试这个:

var属性类型=[{
键:“办公室”,
值:false
}, {
关键词:“住宅”,
值:false
}, {
关键词:零售业,
值:false
}, {
关键词:“工业”,
值:false
}, {
钥匙:“酒店”,
值:false
}];
变量属性类型=[{
“类型”:“办公室”
}, {
“类型”:“零售”
}];
propertyTypes.map(函数(项){
对于(var i=0,iLen=property_types.length;i警报(JSON.stringify(propertyTypes))双for循环就是这样做的。下面是一个简单的例子:

var propertyTypesOut = [];
for (var i = propertyTypes.length - 1; i >= 0; i--) {
    var found = false;
    for (var j = property_types.length - 1; j >= 0; j--) {
        if (propertyTypes[i].key === property_types[j].type) {
            var found = true;
            break;
        }
    };
    propertyTypesOut.push({
        key: propertyTypes[i].key,
        value: found
    });
};

是的,您需要2个fors,您可以这样做:

property_types: [
    {
        "type": "OFFICE"
    },
    {
        "type": "RETAIL"
    }
]
propertyTypes = [
    {key:'OFFICE', value:true},  // so this one should be true
    {key:'RESIDENTIAL', value:false},
    {key:'RETAIL', value:true},  // and this one
    {key:'INDUSTRIAL', value:false},
    {key:'HOTEL', value:false}
];
propertyTypes = [
{key:'OFFICE', value:false},
{key:'RESIDENTIAL', value:false},
{key:'RETAIL', value:false},
{key:'INDUSTRIAL', value:false},
{key:'HOTEL', value:false}
];

property_types= [
    {
        type: "OFFICE"
    },
    {
        type: "RETAIL"
    }
];

propertyTypes.forEach(function(pType) {
    for (index = 0; index < property_types.length; ++index) {
        if(pType.key==property_types[index].type){
            pType.value = true;
break;

        }
    }
});
属性类型=[
{key:'OFFICE',value:false},
{key:'RESIDENTIAL',value:false},
{key:'RETAIL',value:false},
{key:'INDUSTRIAL',value:false},
{key:'HOTEL',value:false}
];
属性类型=[
{
类型:“办公室”
},
{
类型:“零售”
}
];
propertyTypes.forEach(函数(pType){
对于(索引=0;索引
这里有第一个简单的方法,可以让您开始

var propertyTypes = [
    {key:'OFFICE', value:false},
    {key:'RESIDENTIAL', value:false},
    {key:'RETAIL', value:false},
    {key:'INDUSTRIAL', value:false},
    {key:'HOTEL', value:false}
];

var property_types = [
    {
        "type": "OFFICE"
    },
    {
        "type": "RETAIL"
    }
];

for (var i = 0; i < property_types.length; i++) {
    var key = property_types[i].type;
    for (var j = 0; j < propertyTypes.length; j++) {
        if (propertyTypes[j].key === key) {
            propertyTypes[j].value = true;
        }
    }
}

console.log(propertyTypes);
/* returns
[ { key: 'OFFICE', value: true },
  { key: 'RESIDENTIAL', value: false },
  { key: 'RETAIL', value: true },
  { key: 'INDUSTRIAL', value: false },
  { key: 'HOTEL', value: false } ]
*/
var属性类型=[
{key:'OFFICE',value:false},
{key:'RESIDENTIAL',value:false},
{key:'RETAIL',value:false},
{key:'INDUSTRIAL',value:false},
{key:'HOTEL',value:false}
];
变量属性类型=[
{
“类型”:“办公室”
},
{
“类型”:“零售”
}
];
对于(var i=0;i
当您在数组中进行迭代时,
循环的
应该可以工作

而且

应该是:

property_types = [...]
var属性类型=[
{key:'OFFICE',value:false},
{key:'RESIDENTIAL',value:false},
{key:'RETAIL',value:false},
{key:'INDUSTRIAL',value:false},
{key:'HOTEL',value:false}
]
,属性类型=[
{“类型”:“办公室”}
,
{“类型”:“零售”}
]
,结果=“”;
for(first=0;first;
}
记录(结果)

是否需要保留propertyTypes的顺序?数据的结构化方式需要迭代两个数组。为什么你的解决方案不起作用?请把它寄出去。