我想创建一个通用函数,我可以从带有对象的数组中打印选定的属性。
http://jsbin.com/iNOMaYo/1/edit?js,console,output
示例:
var contacts = [
{
name: 'John',
address:{
country:'Germany',
city:'Berlin'
}
},
{
name: 'Joe',
address:{
country:'Spain',
city:'Madrid'
}
}
]
这是我的职责:
function print(array, key, index){
console.log(array[index][key]);
}
所以,如果我想要名称,例如:
print(contacts, 'name', 0)
我得到'约翰'。
但如果我想要这座城市怎么办呢?
这是未定义的:
print(contacts, 'address.city', 0)
http://jsbin.com/iNOMaYo/1/edit?js,console,output
有什么想法吗?
答案 0 :(得分:2)
function print(array, key, index){
var parts = key.split(".");
var returnValue = array[index];
for(var i=0;i<parts.length;i++) {
returnValue = returnValue[parts[i]];
}
console.log(returnValue);
}
答案 1 :(得分:0)
答案 2 :(得分:0)
我的解决方案非常幼稚,我在边缘情况下没有考虑过它,但我是功能编程的粉丝,因此立即(将不可变性放在一边)
function print(array, key, index) {
var splitted_key, new_key;
if (key.indexOf(".") !== -1) {
splitted_key = key.split(".");
new_index = splitted_key.shift();
new_key = splitted_key.join(".");
print(array[index], new_key, new_index);
}
else {
console.log(array[index][key]);
}
}