Javascript将文本嵌套到字符串
我正在寻找一种技术来运行嵌套属性的对象,并希望加入属性 这是我想加入的对象:Javascript将文本嵌套到字符串,javascript,arrays,join,recursion,Javascript,Arrays,Join,Recursion,我正在寻找一种技术来运行嵌套属性的对象,并希望加入属性 这是我想加入的对象: var array = { prop1: { foo: function() { // Your code here } }, prop2: { bar1: 'some value', bar2: 'some other value' } }; 结果应该如下所示: [ [ 'prop1', 'foo' ], [ 'prop2', 'bar1' ],
var array = {
prop1: {
foo: function() {
// Your code here
}
},
prop2: {
bar1: 'some value',
bar2: 'some other value'
}
};
结果应该如下所示:
[
[ 'prop1', 'foo' ],
[ 'prop2', 'bar1' ],
[ 'prop2', 'bar2' ]
]
prop1.foo
prop2.bar1
prop2.bar2
然后我想将数组连接到如下格式的字符串:
[
[ 'prop1', 'foo' ],
[ 'prop2', 'bar1' ],
[ 'prop2', 'bar2' ]
]
prop1.foo
prop2.bar1
prop2.bar2
有什么建议吗
编辑:忘了说它应该也适用于更深层的数组。这是一个完全不同的问题,因为您已经指定它需要支持任意深度。为了解决这个问题,我们需要使用递归,并且我们需要使用第二个递归参数来跟踪我们在嵌套层次结构中的位置
function objectPropertiesToArrays(obj, prepend) {
// result will store the final list of arrays
var result = [];
// test to see if this is a valid object (code defensively)
if(obj != null && obj.constructor === Object) {
for (var propertyName in obj) {
var property = obj[propertyName],
// clone prepend instantiate a new array
list = (prepend || []).slice(0);
// add the property name to the list
list.push(propertyName);
// if it isn't a nested object, we're done
if (property.constructor !== Object) {
result.push(list);
// if it is a nested object, recurse
} else {
// recurse and append the resulting arrays to our list
result = result.concat(objectPropertiesToArrays(property, list));
}
}
}
return result;
}
例如:
var obj = {
prop1: {
foo: function() { }
},
prop2: {
bar1: 'some value',
bar2: 'some other value'
},
prop3: {
x: {
y: [],
z: 'test'
},
erg: 'yar'
}
};
objectPropertiesToArrays(obj);
返回
[
["prop1", "foo"],
["prop2", "bar1"],
["prop2", "bar2"],
["prop3", "x", "y"],
["prop3", "x", "z"],
["prop3", "erg"]
]
类似这样的东西
有什么努力吗?我们不是来为您生成代码的。我们甚至不是在这里提供“提示”,因为这不是一个帮助台。我已经尝试了一些代码,但它没有给我想要的结果。您希望我发布我尝试过的内容吗?另外,您的原始数据结构不是
数组
。这是一个对象
@jfriend00是的,你说得对。我只是忘记了它,因为对我来说,很明显我也需要它来处理更深层次的物体。非常抱歉你浪费了时间。你有什么建议来解决我的问题?