Javascript Объект в массив, а затем удалить элемент - PullRequest
2 голосов
/ 06 июня 2019

У меня есть этот объект

Object {
  "87291": "valid",
  "1873681927": "valid",
  "nwq89j8jw0qj9": "valid",
  "oVFYfWIUOsONE6JyMGYAbnsPMAr1": "valid",
}

, что я хочу сделать, это удалить объект на основе значения ключа и вернуть в виде массива.

Я использовал этот код:

    let attay = {
      "87291": "valid",
      "1873681927": "valid",
      "nwq89j8jw0qj9": "valid",
      "oVFYfWIUOsONE6JyMGYAbnsPMAr1": "valid",
    }


    let aar = Object.entries(attay)
    attay = Object.keys(attay)

    for(var i = 0; i < attay.length; i++) {
      if(attay[i] == 'oVFYfWIUOsONE6JyMGYAbnsPMAr1'){
        console.log("found "+attay[i]+" at "+i)
        aar.splice(i, 1);
        console.log(aar)
      }else{
        console.log("NOT found at "+i)        
      }
    }

этот код работал нормально, но вывод после элемента удаления выглядит следующим образом

Array [
  Array [
    "87291",
    "valid",
  ],
  Array [
    "1873681927",
    "valid",
  ],
  Array [
    "nwq89j8jw0qj9",
    "valid",
  ],
]

ожидаемый вывод должен быть как

Array [
      "87291": "valid",
      "1873681927": "valid",
      "nwq89j8jw0qj9": "valid",
    ]

Ответы [ 5 ]

4 голосов
/ 06 июня 2019

Может быть, я неправильно понимаю, но кажется, что вы слишком усложняете это.Вы хотите удалить свойство из объекта ?

let arr = {
  "87291": "valid",
  "1873681927": "valid",
  "nwq89j8jw0qj9": "valid",
  "oVFYfWIUOsONE6JyMGYAbnsPMAr1": "valid",
}

let removeKey = "oVFYfWIUOsONE6JyMGYAbnsPMAr1"
delete arr[removeKey]; // Remove the property

console.log(arr);
1 голос
/ 06 июня 2019

ответ пришел от @ Pointy

delete attay.oVFYfWIUOsONE6JyMGYAbnsPMAr1

простой и работал как шарм, а также работал на React Native

1 голос
/ 06 июня 2019

Если ваша среда выполнения в порядке с относительно современными entriesfromEntries), то вы можете просто получить то, что хотите. (Предполагается, что вы действительно стремитесь к выводу объекта, а не к массиву, основанному на синтаксисе в вашем вопросе).

let attay = {
  "87291": "valid",
  "1873681927": "valid",
  "nwq89j8jw0qj9": "valid",
  "oVFYfWIUOsONE6JyMGYAbnsPMAr1": "valid",
}

let removeKey = "oVFYfWIUOsONE6JyMGYAbnsPMAr1"

let pairs = Object.entries(attay).filter(e => e[0] != removeKey)
const obj = Object.fromEntries(pairs);
console.log(obj)
0 голосов
/ 06 июня 2019

Вы можете избежать менее поддерживаемых fromEntries, используя простой reduce.

let attay = {
  "87291": "valid",
  "1873681927": "valid",
  "nwq89j8jw0qj9": "valid",
  "oVFYfWIUOsONE6JyMGYAbnsPMAr1": "valid",
};
const remove = "oVFYfWIUOsONE6JyMGYAbnsPMAr1";
const res = Object.entries(attay).reduce((acc, [k, v]) => k == remove ? acc : (acc[k] = v, acc), {});
console.log(res);
0 голосов
/ 06 июня 2019

вы можете использовать delete таким образом, если ключ совпадает с правильностью:

const obj = {
  "87291": "valid",
  "1873681927": "valid",
  "nwq89j8jw0qj9": "valid",
  "oVFYfWIUOsONE6JyMGYAbnsPMAr1": "valid",
}

const key = "87291";

delete obj[key]



console.log(obj)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...