使用所选项目创建新对象


myObject  { orange: "10.5", banana:"20.5", apple: "5.1", pineapple: "5.1", cherry: "5.1" }

我想创建这个

myNewObject { apple: "5.1", cherry: "5.1" }

我的代码是

for (var property in myObject)  {
delete object["orange"];
delete object["banana"];
delete object["pineapple"];
}

(是否有与删除功能相反的功能?我想在数组中声明我在 myNewObject 中保留的项目的选择

var FruitsRed = ["apple", "cherry",]

您可以创建所需属性的数组,并使用.map()创建对象列表,然后将其传递给 Object.assign()

var myObject = {orange: "10.5", banana: "20.5", apple: "5.1", pineapple: "5.1", cherry: "5.1"};
var res = Object.assign({}, 
   ...["banana", "cherry"].map(s => ({[s]: myObject[s]}))
);
console.log(res);


或者,如果您真的想第一个示例一样改变原始对象,那么您可以遍历所有键并删除不在预定义集中的键。

var myObject = {orange: "10.5", banana: "20.5", apple: "5.1", pineapple: "5.1", cherry: "5.1"};
var toKeep = new Set(["banana", "cherry"]);
Object.keys(myObject)
      .filter(k => !toKeep.has(k))
      .forEach(k => delete myObject[k]);
console.log(myObject);

您可以使用函数

filterincludesreduce

var FruitsRed = ["apple", "cherry"],
    myObject = { orange: "10.5", banana:"20.5", apple: "5.1", pineapple: "5.1", cherry: "5.1" },
    myNewObject = Object.keys(myObject)
                        .filter(k => FruitsRed.includes(k))
                        .reduce((a, k) => ({ ...a, ...{[k]: myObject[k]}}), {});
console.log(myNewObject);
.as-console-wrapper { max-height: 100% !important; top: 0; }

或者

你可以使用对象ES6解构。

let myObject = { orange: "10.5", banana:"20.5", apple: "5.1", pineapple: "5.1", cherry: "5.1" };
let { orange, banana, pineapple, ...myNewObject } = myObject;
console.log(myNewObject);

文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

你可以循环

你的数组,并随时构建你的新对象。

var obj = { orange: "10.5", banana:"20.5", apple: "5.1", pineapple: "5.1", cherry: "5.1" }
    
var FruitsRed = ["apple", "cherry",]
var newObj = {}
FruitsRed.forEach(function (fruit) {
    newObj[fruit] = obj[fruit];
});
console.log(newObj);

您可以遍历数组并获取所需的键值对:

var myObject = { "orange": "10.5", "banana":"20.5", "apple": "5.1", "pineapple": "5.1", "cherry": "5.1" };
var myNewObject = {};
var FruitsRed = ["apple", "cherry"];
FruitsRed.forEach(function(fruit){
   myNewObject[fruit] = myObject[fruit];
});
console.log(myNewObject);

let myObject  = { orange: "10.5", banana:"20.5", apple: "5.1", pineapple: "5.1", cherry: "5.1" }
let FruitsRed = ["apple", "cherry",]
Object.keys(myObject).forEach((k)=> FruitsRed.indexOf(k)===-1 && delete myObject[k])

让我知道这是否有效

最新更新