解构对象值到数组

时间:2018-09-25 21:03:01

标签: javascript ecmascript-6

我正在尝试从对象中提取一些值并将它们放入数组中。到目前为止,我有这个:

let obj = {
  a: 'a',
  b: 'b',
  c: 'c',
  d: 'd',
  e: 'e'
};
    
let arr = [{a, b, c} = obj];
    
console.log(arr);

但是,这将返回一个只有一个对象的数组:

  

[{a:'a',b:'b',c:'c',d:'d',e:'e'}]

我想要的输出是:

['a', 'b', 'c']

有人知道我在做什么错吗?

3 个答案:

答案 0 :(得分:2)

您可以使用short hand properties获取新对象的值。

import time
from bs4 import BeautifulSoup
from selenium import webdriver

link = "https://www.flipkart.com/poco-f1-graphite-black-64-gb/product-reviews/itmf8fyjyssnt25c?page={}&pid=MOBF85V7A6PXETAX"

driver = webdriver.Chrome() #If necessary, define the chrome path explicitly
for page_num in range(1,5):
    driver.get(link.format(page_num))
    [item.click() for item in driver.find_elements_by_class_name("_1EPkIx")]
    time.sleep(1)
    soup = BeautifulSoup(driver.page_source, 'lxml')
    for items in soup.select("._3DCdKt"):
        title = items.select_one("p._2xg6Ul").text
        review = ' '.join(items.select_one(".qwjRop div:nth-of-type(2)").text.split())
        print(f'{title}\n{review}\n')

driver.quit()

或者将所需的键用于新阵列。

let obj = { a: 'a', b: 'b', c: 'c', d: 'd', e: 'e' },
    { a, b, c } = obj,
    arr = Object.values({ a, b, c });

console.log(arr);

答案 1 :(得分:1)

要实现以下选项的预期用途
在赋值语句周围使用(),因为{}在解构赋值期间被视为块而不是对象文字

let obj = {
  a: 'a',
  b: 'b',
  c: 'c',
  d: 'd',
  e: 'e'
};
//({a, b, c, ...rest} = obj) // to have access of rest of parameters
({a, b, c} = obj)
let arr = [a,b,c];

console.log(arr);

codepen-https://codepen.io/nagasai/pen/EeBBjQ?editors=1011

答案 2 :(得分:0)

您可以使用comma operator进行内联:

let obj = {
  a: 'a',
  b: 'b',
  c: 'c',
  d: 'd',
  e: 'e'
};
    
let arr = ({a, b, c} = obj, [a, b, c]);
    
console.log(arr);