遍历对象并根据下一个键值JavaScript删除键

时间:2020-08-11 14:50:58

标签: javascript

我有一个带有键值对的对象,其中value是一个数组。像这样

{
"a": [12],
"b": [1,3],
"c": [0,4],
"d": [0.5],
"e": [3,4],
"f": [3,4],
"g": [],
"h": [],
}

我想遍历此对象,并保留最后一个键,没有空数组。因此,基本上从上面的示例开始,我只想保留 f 键,因为它是没有空数组的最后一个键,并删除除此键以外的所有其他键。对象应该看起来像这样。

 {
    "f": [3,4]
 }

实现此目标的最佳方法是什么?可以使用删除方法吗?

2 个答案:

答案 0 :(得分:0)

使用Object.keys遍历数组的键。这将创建一个数组,您可以根据需要对它进行排序,因为javascript中的对象属性没有“自然顺序”。

var obj = {
  "a": [12],
  "b": [1, 3],
  "c": [0, 4],
  "d": [0.5],
  "e": [3, 4],
  "f": [3, 4],
  "g": [],
  "h": [],
};

var newObj = {};
var keys = Object.keys(obj).sort();
for(var i=keys.length; i--;){
  if(obj[keys[i]].length){
    newObj[keys[i]] = obj[keys[i]];
    break;
  }
}

console.log(newObj);

答案 1 :(得分:0)

看看这个,我向后遍历了一个非空数组:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>

</html>
<script>
    var obj = {
        "a": [12],
        "b": [1, 3],
        "c": [0, 4],
        "d": [0.5],
        "e": [3, 4],
        "f": [3, 4],
        "g": [],
        "h": [],
    };

    const n = Object.keys(obj).length;
    const k = Object.keys(obj);

    for (let i = n - 1; i >= 0; i--) {
        if (obj[k[i]].length != 0) {
            ans = {
                [k[i]]: obj[k[i]]
            }
            break;
        }
    }

    console.log(ans);
</script>