相关疑难解决方法(0)

使用另一个对象的属性子集获取对象

我知道这个现有的问题,但我只对普通的javascript解决方案感兴趣(没有像lodash这样的外部库).

什么是最干净的方式(包括所有ES6的善良和超越 - 像对象休息和传播等)从javascript中获取具有来自另一个对象的道具子集的对象?

可以说,我要挑foo,barbazsource对象.我目前有两个解决方案,我不喜欢它们:

1.

const result = {
  foo: source.foo,
  bar: source.bar,
  baz: source.baz
};
Run Code Online (Sandbox Code Playgroud)

2.

const { foo, bar, baz } = source;
const target = { foo, bar, baz };
Run Code Online (Sandbox Code Playgroud)

第二个是较短但是它用一些变量污染了当前的执行范围,并且它们的列表无论如何都必须写入两次.

PS.我也不想Object.prototype用一些辅助方法扩充或调用一些自定义函数来实现这一点.

javascript

6
推荐指数
1
解决办法
103
查看次数

将对象属性复制到新对象的最佳方法?

我正在学习React,在此过程中,我正在开发自己的JavaScript技能,这些技能目前处于初学者水平。我有一个代表注册表单的组件,表单的输入值(用户名,电子邮件密码等)存储在该组件的状态中。

表单的状态如下:

this.state = {
    username: "",
    password: "",
    email: "",
    firstName: "",
    lastName: "",
    country: "",
    region: "",
    phoneNumber: "",
    selectCountries: []
};
Run Code Online (Sandbox Code Playgroud)

留下来,我想创建一个新对象以传递给注册方法,该方法仅包括用户名,电子邮件和密码字段。最好的方法和最快的方法是什么?

目前,我要做的是手动映射所需的属性,如下所示:

const { username, email, password } = this.state;

let registrationData = {
    username, email, password
};
Run Code Online (Sandbox Code Playgroud)

这是最好的方法吗?有什么办法可以将这两个语句合并为一个?

任何输入将不胜感激,非常感谢!

javascript object variable-assignment ecmascript-6 reactjs

6
推荐指数
0
解决办法
62
查看次数

仅保留数组中每个对象中的选定键

编辑:不是重复的,因为我的问题不要求删除特定键,而是在数组中找不到所有键。

在下面,函数从对象中redux1删除与未列出的键对应的条目。keys_to_keepdata

鉴于我有一个要保留的对象键列表,我如何redux1以更简洁的方式重写,最好使用map,filterreduce?

var data = [
	{name: 'John', city: 'London', age: 42},
	{name: 'Mike', city: 'Warsaw', age: 18},
	{name: 'Jim', city: 'New York', age: 22},
	{name: 'Celine', city: 'Tokyo', age: 54},
]

var keys_to_keep = ['name', 'city']

function redux1(data) {
	data.forEach((person) => {
		Object.keys(person).forEach((key) => {
			if (!keys_to_keep.includes(key)) {
				delete (person[key])
			}
		})
	})
	console.log(data)
}

function redux2(data) {	
	var reduced = data.filter(person => Object.keys(person).filter(key => keys_to_keep.includes(key))) …
Run Code Online (Sandbox Code Playgroud)

javascript

5
推荐指数
2
解决办法
4477
查看次数

JavaScript:如何通过解构从嵌套对象复制一些键

说我有一个对象:

myObj = { 
  name: 'Luke',
  age: 12,
  height: '163cm',
  weight: '60kg',
  others: { one: '1', two: '2', three: '3'} // (Edited) Added one more key here :)
};
Run Code Online (Sandbox Code Playgroud)

我想要此对象的副本,但不具有指向新对象的某些键,其输出方式如下:

newObj = { 
      name: 'Luke',
      age: 12,
      one: '1',
      two: '2'
    };
Run Code Online (Sandbox Code Playgroud)

我已经看到了破坏的例子,但是我想知道嵌套对象是否有可能。使用解构是否可以实现这样的目的,否则,将是最有效的方法吗?

javascript destructuring ecmascript-6

4
推荐指数
1
解决办法
98
查看次数

在javascript对象中切片特定键

在rails中,我有一种特殊的slice 方法来保留Hash我需要的键.在哈希中仅允许所需的密钥非常方便.

Node.js中有这样的方法吗?

javascript node.js

3
推荐指数
3
解决办法
7812
查看次数

基于数组过滤对象

我有一个具有这种形式的对象:

const obj = {
    abc: "Moon",
    def: "Earth",
    asd: "Sun",
    dmg: "Venus",
    xyz: "Mars",
    tuv: "Jupiter"
};
Run Code Online (Sandbox Code Playgroud)

以及这种形式的数组:

const arr = ["abc", "def", "tuv"];
Run Code Online (Sandbox Code Playgroud)

我想obj根据给出的值进行过滤arr.这意味着,有没有办法,可能使用过滤方法,obj变成这样:

const newObj = {
    abc: "Moon",
    def: "Earth",
    tuv: "Jupiter"
};
Run Code Online (Sandbox Code Playgroud)

javascript arrays object filter

3
推荐指数
2
解决办法
48
查看次数

如何仅使用列出的键创建对象?

创建一个由选取的源属性组成的对象。

参数

  • source - 任何 JavaScript 对象
  • keys - 一组 JavaScript 字符串

返回值

一个新对象,包含键中列出的所有源属性。如果键列在键中,但未在源中定义,则该属性不会添加到新对象中。

例子

pick({ foo: 1, bar: 2, baz: 3 }, ['foo', 'baz']) // -> { foo: 1, baz: 3 }
pick({ qux: 4, corge: 5 }, ['bar', 'grault'])    // -> {}
pick({ bar: 2 }, ['foo', 'bar', 'baz'])          // -> { bar: 2 }
Run Code Online (Sandbox Code Playgroud)

我有

function pick(source, keys) {
  let result = {};
  for (key in source) {
    if (key === keys) {
      result[key];
    }
  }
  return …
Run Code Online (Sandbox Code Playgroud)

javascript

2
推荐指数
1
解决办法
139
查看次数

是否存在将对象属性的子集复制到新对象的ES6简写?

考虑以下对象:

const obj = {a: 1, b: 2, c: 3, d: 4, e: 5}
Run Code Online (Sandbox Code Playgroud)

是否有一个简单的语法来创建包含以下内容的新对象:

const obj2 = {a, b, d}
Run Code Online (Sandbox Code Playgroud)

我知道有下划线和lodash .pick(),但我希望有一些我可能不知道的解构技巧.

javascript destructuring ecmascript-6

1
推荐指数
2
解决办法
1114
查看次数

从对象数组中提取这些属性

假设我有一个对象数组,这里我假设对象具有三个属性,但可能更多,我想用属性名称提取其中一些:

objArr = [{
  name : "name",
  description : "description",
  date : "date"
},{
  name : "name",
  description : "description",
  date : "date"
},{
  name : "name",
  description : "description",
  date : "date"
}]
Run Code Online (Sandbox Code Playgroud)

name比如说,我只想从上述 中提取 的值objArr。我可以使用以下方法来做到这一点:

(function(objArray){
  objArray.forEach(function(arrObjItem) {
    for(let name in arrObjItem) {
      if(arrObjItem.hasOwnProperty(name)) {
        console.log(objArrItem.name)
      }
    }
  })
})(objArr)
Run Code Online (Sandbox Code Playgroud)

但我真正想要的是提取两个以上属性的值namedescription/或值,如果问题具有不同的数据结构,每个对象有更多属性。最后,我想创建这些提取的属性的映射。(或具有提取的属性、值的新对象数组)(或具有提取的属性、值对的元组)。

javascript data-structures

1
推荐指数
1
解决办法
118
查看次数

动态地将列推入新数组

我有一个清单

let data = [{order: 1, plannedid:32, userid:123 },
            {order: 2, plannedid:33, userid:124 }];
let keys = ['orderid','plannerid'];
Run Code Online (Sandbox Code Playgroud)

根据我们需要从数组中获取所有列的键。

我可以使用以下代码按预期获取数据,

let tempData =[];
 data.forEach(function(d) {
            tempData.push({
              orderid: d.orderid,
              plannerid: d.plannerid
            });
          });
Run Code Online (Sandbox Code Playgroud)

输出:

[{order: 1, plannedid:32},
{order: 2, plannedid:33 }];
Run Code Online (Sandbox Code Playgroud)

但如果我的键数组是动态的,我们如何根据键读取

ex: let keys = ['orderid','userid'];
Run Code Online (Sandbox Code Playgroud)

我们可以在 Push 函数中添加条件吗

javascript

1
推荐指数
1
解决办法
100
查看次数

如何获取在Javascript中作为列表给出的属性子集?

我需要用数组映射对象数据

const data = [
              {name:"John", age:"22", weight:"60", height:"180cm"},
              {name:"Emma",age:"25",weight:"55",height:"160cm"}
             ]

const key =  ["name", "weight", "height"]
Run Code Online (Sandbox Code Playgroud)

我需要这样的结果

const result = [
                {name:"John", weight:"60", height:"180cm"},
                {name:"Emma", weight:"55",height:"160cm"}
               ]
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

javascript arrays object

0
推荐指数
1
解决办法
104
查看次数