Object.keys、切片和拼接

Ele*_*n11 5 javascript arrays object splice

所以我还在学习数组和对象,我有点卡住了。我做了一个对象数组的例子:

var something = {candy:[{name:"snickers", price:2},
                    {name:"bounty", price:3},
                    {name:"mars", price:4}]};

Object.keys(something.candy).filter(function(obj){
return console.log(something.candy[obj].name);
})
Run Code Online (Sandbox Code Playgroud)

1.问题-为什么我写的时候不起作用:

var candy1 = Object.keys(something.candy);
candy1.filter(function(obj){
return console.log(obj.name);
});
Run Code Online (Sandbox Code Playgroud)

是不是和上面的代码含义几乎一样?

2.问题为什么slice可以工作而splice不行???

Object.keys(something.candy).filter(function(obj){
return console.log(something.candy[obj].name.slice(0,3));
})

Object.keys(something.candy).filter(function(obj){
return a(something.candy[obj].name.splice(1,3));
})
Run Code Online (Sandbox Code Playgroud)

Mar*_*yer 3

在学习这一点时,将每个部分拆开并查看会很有帮助。例如你有一个对象:

var something = {candy:[{name:"snickers", price:2},
                {name:"bounty", price:3},
                {name:"mars", price:4}]};

// what is something.candy:

console.log("candy:", something.candy)

// an array -- so what do you get with Object.keys?

var candy1 = Object.keys(something.candy)
console.log("keys:", candy1)

// just the indexes!

// So when you try to filter
candy1.filter(function(obj){
    // there is no obj.name becuase each object is just a number
    return console.log(obj);
});
Run Code Online (Sandbox Code Playgroud)

我想你只想这样做:

var something = {candy:[{name:"snickers", price:2},
                    {name:"bounty", price:3},
                    {name:"mars", price:4}]};

var select = something.candy.filter(obj => {
  console.log(obj.name) // look at them all
  return obj.name === "mars" // just pick this one
})

console.log("filtered: ", select) 
Run Code Online (Sandbox Code Playgroud)