我有一个看起来像这样的对象:
{
title: "test",
subtitle: "test",
"list-item-1": "This is item 1",
"list-item-2": "This is item 2",
"list-item-3": "This is item 3"
}
我想找到该对象中以-1
或任何-
数值结尾的所有键。然后以某种方式将所有这些组合在一起,我可以通过调用“如果项目末尾有-1
”之类的内容来查找它们,找到所有其他具有相同第一部分的项目({{1在这种情况下)并将它们保存到自己的数组或变量中。
我该怎么做?
答案 0 :(得分:2)
获取属性的一种简单方法是使用内置方法,如keys(),filter()和test():
var obj={
title: "test",
subtitle: "test",
"list-item-1": "This is item 1",
"list-item-2": "This is item 2",
"list-item-3": "This is item 3",
};
var arrOK=Object.keys(obj).filter(/./.test, /list-item-\d+$/);
alert(arrOK); // shows: "list-item-1,list-item-2,list-item-3"
答案 1 :(得分:0)
首先,它不是一个数组 - 它是一个Javascript对象,但它的格式不正确,因为项目之间没有逗号。
您可以像这样迭代对象,并访问每个对象属性的名称,如下所示。
for (item in obj) {
if (obj.hasOwnProperty(item)) {
// the 'item' variable is the name you are looking for.
// use a regex pattern to match on -#.
}
}
答案 2 :(得分:0)
您可以使用for..in
迭代对象键,然后只进行一些简单的字符串/正则表达式匹配。
var new_obj = {};
// iterate over keys in object
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
// ends in "dash number"
if (key.match(/-\d+$/)) {
// get new key by stripping off "dash number"
var newkey = key.replace(/-\d+$/, "");
// ensure new object has this property; make it an array
if (!new_obj.hasOwnProperty(newkey)) {
new_obj[newkey] = [];
}
// append original object item to this new property
new_obj.push(obj[key]);
}
}
}