Javascript 如果数组中存在值,如何获取数组。滑动分页
如果Javascript 如果数组中存在值,如何获取数组。滑动分页,javascript,jquery,Javascript,Jquery,如果spConfig['attributes'][125]['options']中存在“id”:“236”,则获取中包含的数组 在jQuery中如何实现这一点 var spConfig = { "attributes": { "125": { "id": "125", "code": "pos_colours", "label": "Colour", "options": [{
spConfig['attributes'][125]['options']
中存在“id”:“236”
,则获取中包含的数组
在jQuery中如何实现这一点
var spConfig = {
"attributes": {
"125": {
"id": "125",
"code": "pos_colours",
"label": "Colour",
"options": [{
"id": "236",
"label": "Dazzling Blue",
"price": "0",
"oldPrice": "0",
"products": ["11148"]
}, {
"id": "305",
"label": "Vintage Brown",
"price": "0",
"oldPrice": "0",
"products": ["11786", "11787", "11788", "11789", "11790", "11791", "11792", "11793"]
}]
}
}
函数findMe(搜索词,位置){
对于(变量i=0;i
函数findMe(搜索词,位置){
对于(变量i=0;i
您的数据结构有点复杂,但假设options.id
是唯一的,您可以使用
function foo(arg) {
var filtered;
$.each(spConfig.attributes, function() {
filtered = $(this.options).filter(function() {
return this.id == arg;
});
});
return (filtered.length) ? filtered[0].products : [];
}
传递不存在的键时返回空数组的函数
此外,如果您有多个属性
属性(而不是125
),并且希望在它们上面迭代:
function foo(arg) {
var filtered=[];
$.each(spConfig.attributes, function() {
filtered.push($(this.options).filter(function() {
return this.id == arg;
}));
});
filtered = $(filtered).filter(function() {
return this.length;
});
return (filtered.length) ? filtered[0][0].products : [];
}
或者,如果您总是访问属性属性[125]
,为了简单起见,您也可以将其保留为硬编码:
function foo(arg) {
var filtered = $(spConfig.attributes[125].options).filter(function() {
return this.id == arg;
});
return (filtered.length) ? filtered[0].products : [];
}
或者,如果需要更多自定义,则传递属性
属性名
function foo(arg, attr) {
var filtered = $(spConfig.attributes[attr].options).filter(function() {
return this.id == arg;
});
return (filtered.length) ? filtered[0].products : [];
}
您的数据结构有点复杂,但假设
options.id
是唯一的,您可以使用
function foo(arg) {
var filtered;
$.each(spConfig.attributes, function() {
filtered = $(this.options).filter(function() {
return this.id == arg;
});
});
return (filtered.length) ? filtered[0].products : [];
}
传递不存在的键时返回空数组的函数
此外,如果您有多个属性
属性(而不是125
),并且希望在它们上面迭代:
function foo(arg) {
var filtered=[];
$.each(spConfig.attributes, function() {
filtered.push($(this.options).filter(function() {
return this.id == arg;
}));
});
filtered = $(filtered).filter(function() {
return this.length;
});
return (filtered.length) ? filtered[0][0].products : [];
}
或者,如果您总是访问属性属性[125]
,为了简单起见,您也可以将其保留为硬编码:
function foo(arg) {
var filtered = $(spConfig.attributes[125].options).filter(function() {
return this.id == arg;
});
return (filtered.length) ? filtered[0].products : [];
}
或者,如果需要更多自定义,则传递属性
属性名
function foo(arg, attr) {
var filtered = $(spConfig.attributes[attr].options).filter(function() {
return this.id == arg;
});
return (filtered.length) ? filtered[0].products : [];
}
您好,谢谢您的回复,但是您输入的代码只返回myArray中是否找到您的妈妈,它不会告诉我您妈妈所在的数组的密钥是什么。。。任何想法此函数对该任务都没有帮助。您好,谢谢您的回复。但是,您输入的代码仅返回是否在myArray中找到您的妈妈,它不会告诉我包含您妈妈所在数组的密钥。。。此函数的任何IDEA对该任务都没有帮助。位置是数组,而不是对象。使用适当的循环。@bergi数组是一个对象,其内容是可枚举的。当然,您可以选择原型扩展,但在这种情况下这并不重要,因为
['id']==searchTerm
如果为空则会失败,而且原型也不应该如此混乱。这不比普通for循环快吗?不,它不快。是的,原型可以具有可枚举属性,例如,当对IE进行多填充es5方法或indexOf
时。是的,您可以枚举原型属性,但是添加['id']
引用将返回未定义的属性,这将导致等式检查失败并继续。我所说的混乱是指没有足够的额外属性来影响性能。如果它没有更快,尽管我认为它没有什么区别(更新为常规)。位置是一个数组,而不是一个对象。使用适当的循环。@bergi数组是一个对象,其内容是可枚举的。当然,您可以选择原型扩展,但在这种情况下这并不重要,因为['id']==searchTerm
如果为空则会失败,而且原型也不应该如此混乱。这不比普通for循环快吗?不,它不快。是的,原型可以具有可枚举属性,例如,当对IE进行多填充es5方法或indexOf
时。是的,您可以枚举原型属性,但是添加['id']
引用将返回未定义的属性,这将导致等式检查失败并继续。我所说的混乱是指没有足够的额外属性来影响性能。如果它没有更快,尽管我认为它没有什么区别(将其更新为常规)。您希望获得哪个数组,即选项
数组?或者您是指属性“id”为236的对象吗?您希望获取哪个数组,即选项数组?或者您是指属性“id”为236的对象?