它应该是一些基础知识,但我找不到通过2天谷歌搜索来解决它的方法.. 无论如何,这里是。 我有一个
array_1 = [1,2,3...]
其中每个元素都是唯一的,即ID 另外,我有一个
Obj_1 = {2001=[2073,183,11],2011=[101,7,83,179], 2089=[1,11], ...}
目标:将Obj_1
的每个属性的数组元素与array_1
的元素匹配,如果匹配,则将属性 - 匹配元素的ID(从array_1
)添加到Obj_2
并将匹配值(Obj_1
)中的整个数组添加到此属性中。
例。当我浏览2001
的{{1}}属性时,ID Obj_1
将与数组匹配。然后我希望将属性11
添加到11
的值,以便最后
Obj_2
我编写了这段代码,在不添加Obj_1属性键的情况下将其保存为以下形式的数组。
Obj_2 = {11:{2001:[2073,183,11],2089:[1,11]}, 7:{}, 1:{}..}
因此,我现在得到的结果是
var Obj_2 = {};
var key1 = 0;
for (var i in array_1) {
Obj_2[array_1[i]] = [];
for (var x in Obj_1){
for (var m in Obj_1[x]){
if (Obj_1[x][m]==array_1[i]){
key1 = array_1[i];
Obj_2[key1].push(Obj_1[x]);
}
}
}
}
主要问题是我不知道
Obj_2 = {11:[[2073,183,11],[1,11]], 7:[[]], 1:[[]] ...}
1. how to access the property of a property (especially with respect to the differences between when a property exists and when it doesn't)
非常感谢指向正确的方向。最后一点,它是Google Script上的一个脚本,但我认为它没有任何区别。
答案 0 :(得分:0)
这里很少Fiddle。
var indexes = [1, 3, 5];
var Obj_1 = {'100':[3,183,1],'200':[101,5,2,179],'300':[1,11]};
var Obj_2 = { };
var needle = 0;
for (var i in indexes) {
needle = indexes[i];
Obj_2['' + needle] = { };
for (var prop_1 in Obj_1) {
var haystack = Obj_1[prop_1];
if (haystack.indexOf(needle) >= 0) {
Obj_2[needle]['' + prop_1] = haystack;
}
}
}
console.log(Obj_2);
在Javascript中操作对象和数组时要小心,它们不具有相同的结构,但项目访问运算符([])是相同的。