在对象中查找类似的项目

时间:2014-01-31 17:50:15

标签: javascript

我有一个看起来像这样的对象:

{
    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在这种情况下)并将它们保存到自己的数组或变量中。

我该怎么做?

3 个答案:

答案 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]);
        }
    }
}