gpt4 book ai didi

javascript - 查询 JavaScript 对象

转载 作者:行者123 更新时间:2023-11-28 12:13:27 25 4
gpt4 key购买 nike

给定以下三个对象,返回第一个包含键值对的对象的有效方法是什么?

var obj = {
item1: {
name: 'apple',
color: 'red'
},
item2: {
name: 'blueberry',
color: 'blue'
},
item3: {
name: 'cherry',
color: 'red'
}
};

var obj2 = {
collection: [
{
item1: {
name: 'apple',
color: 'red'
},
item2: {
name: 'blueberry',
color: 'blue'
},
item3: {
name: 'cherry',
color: 'red'
}
}
]
};

var obj3 = {
items: [
{
item1: {
name: 'apple',
color: 'red'
}
},
{
item2: {
name: 'blueberry',
color: 'blue'
},
},
{
item3: {
name: 'cherry',
color: 'red'
}
}
]
};

我希望以下三个语句得到相同的结果:

getObject(obj, 'color', 'red');
getObject(obj2, 'color', 'red');
getObject(obj3, 'color', 'red');

输出:

{
name: 'apple',
color: 'red'
}

这是我到目前为止所拥有的,但我认为它在某个地方缺少一个闭包,因为它在函数调用自身时中断:

function getObject(arg, key, val) {
if (typeof arg!=='object') return null;
switch (Object.prototype.toString.call(arg)) {
case '[object Array]':
for (var i=0; i<arg.length; ++i) {
getObject(arg[i], key, val);
}
break;
case '[object Object]':
for (var i in arg) {
if (arg.hasOwnProperty(i)) {
if (typeof arg[i]==='object') {
getObject(arg[i], key, val);
} else {
if (i===key && arg[i]===val) {
return arg;
}
}
}
}
break;
}
}

最佳答案

您可以使用此函数,它还将搜索更深层嵌套的数据结构。

function getObject(obj, prop, value) {
if (Object(obj) !== obj) return; // It is not an object
if (obj[prop] === value) return obj; // Found it
for (var key in obj) {
var result = getObject(obj[key], prop, value);
if (result) return result; // Found it
}
}

var obj = {item1: {name: 'apple',color: 'red'},item2: {name: 'blueberry',color: 'blue'},item3: {name: 'cherry',color: 'red'}};
var obj2 = {collection: [{item1: {name: 'apple',color: 'red'},item2: {name: 'blueberry',color: 'blue'},item3: {name: 'cherry',color: 'red'}}]};
var obj3 = {items: [{item1: {name: 'apple',color: 'red'}},{item2: {name: 'blueberry',color: 'blue'},},{item3: {name: 'cherry',color: 'red'}}]};

console.log(getObject(obj, 'color', 'red'));
console.log(getObject(obj2, 'color', 'red'));
console.log(getObject(obj3, 'color', 'red'));

关于javascript - 查询 JavaScript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55619521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com