提问者:小点点

从Java脚本对象中删除值


我想知道如何从包含多个值的对象中删除特定值

这就是我的对象的样子

{
  'how can i change my password?': [
    'how can I change my password?',
    'how may I change my password?',
    'how am I able to change my password?'],

'how do i change my password?': [
    'how may I change my password?',
    'how can I change my password?',
    'how should I change my password?',
    'how would I change my password?',
    'how do I change my password?']
}

我想做的是搜索如何更改我的密码值,每当我找到它我想删除这个值。

如果稍微搜索一下,我发现的只是使用delete删除整个对象或删除一个完整的属性,但这不是我想要的。 我只想从一个数组中删除一个值。

预期产出:

{
  'how can i change my password?': [
    'how may I change my password?',
    'how am I able to change my password?'],

'how do i change my password?': [
    'how may I change my password?',
    'how should I change my password?',
    'how would I change my password?',
    'how do I change my password?']
}

共3个答案

匿名用户

使用object.Entries迭代对象,然后使用Array.filter筛选出您想要/不想要的内容:

null

let obj = {
  'how can i change my password?': [
    'how can I change my password?',
    'how may I change my password?',
    'how am I able to change my password?'
  ],

  'how do i change my password?': [
    'how may I change my password?',
    'how can I change my password?',
    'how should I change my password?',
    'how would I change my password?',
    'how do I change my password?'
  ]
}

for (let [key, val] of Object.entries(obj))
  obj[key] = val.filter(
    v => v !== 'how can I change my password?'
  );

console.log(obj);

匿名用户

你可以试试这个。 循环遍历所有键并使用过滤器。

const obj = {
  'how can i change my password?': [
    'how can I change my password?',
    'how may I change my password?',
    'how am I able to change my password?'],

'how do i change my password?': [
    'how may I change my password?',
    'how can I change my password?',
    'how should I change my password?',
    'how would I change my password?',
    'how do I change my password?']
}


Object.keys(obj).forEach(key => {
  obj[key] = obj[key].filter(value => value != 'how can I change my password?')
})

console.log(obj)

匿名用户

我只想从一个数组中删除一个值。

如果只想从数组中移除一个值,并且知道它的索引,则可以使用splice方法移除数组中的特定索引。

 const obj = {
    'how can i change my password?': [
        'how can I change my password?',
        'how may I change my password?',
        'how am I able to change my password?'],
    'how do i change my password?': [
        'how may I change my password?',
        'how can I change my password?',
        'how should I change my password?',
        'how would I change my password?',
        'how do I change my password?']
}

obj['how can i change my password?'].splice(1, 1);

// obj is now

{
    'how can i change my password?': [
        'how can I change my password?',        
        'how am I able to change my password?'],
    'how do i change my password?': [
        'how may I change my password?',
        'how can I change my password?',
        'how should I change my password?',
        'how would I change my password?',
        'how do I change my password?']
}