【问题标题】:Arrays to objects数组到对象
【发布时间】:2017-11-12 02:32:11
【问题描述】:

我有这个问题,我找不到答案:

创建一个名为firstAndLast 的函数,它接受一个数组并返回一个具有一个属性的对象。该属性的键应该是第一个数组元素,它的值应该是数组中的最后一个元素。例子: firstAndLast(["queen", "referee", "cat", "beyonce"]) 应该返回 {queen: "beyonce"}

【问题讨论】:

标签: javascript arrays object


【解决方案1】:

一些不同的方法(诚然深奥,但很有趣!):

function firstAndLast(a, o){
    return !(o = {}, o[a.shift()] = a.pop()) || o;
}

console.log(firstAndLast([1,2,3,4,5]));
console.log(firstAndLast(['a','to','z']));

https://jsfiddle.net/brtsbLp1/

当然还有:

function firstAndLast(a, o){
    return !(o = o || {}, o[a.shift()] = a.pop()) || o;
}

console.log(firstAndLast(['a','to','z']));
console.log(firstAndLast(['a','to','z'], {a:'nother',obj:'ect'}));

https://jsfiddle.net/brtsbLp1/1/

另一个有趣的:

function firstAndLast(a){
    return JSON.parse('{"'+a.shift()+'":"'+a.pop()+'"}');
}

https://jsfiddle.net/brtsbLp1/2/

最后一个会因为第一个是数字而窒息(因为标签不允许只是数字),以及其他一般问题。但这应该让人深思。其他答案比较明显。

【讨论】:

  • 这很酷,出于好奇,你会写这样的东西吗?
  • 可能不会在实践中。例如,我会让它更具人类可读性。使用.length 可能比使用.pop().shift() 更便宜。
  • 贾里德,干得好!继续前进,祝你好运。
【解决方案2】:

您可以使用[] 指定密钥

function firstAndLast(arr){
  let o = {};
  o[arr[0]] = arr[arr.length - 1]; // the key is the first elem, the value the last elem of the array
  return o;
}

let a = [1,2,3,4,5]
let b = firstAndLast(a)

【讨论】:

  • 根据规范,这是真正的答案。
  • 谢谢贾里德,非常感谢。
【解决方案3】:
function firstAndLast(arr){
    var obj = {
        }
        var length = arr.length;
        obj[arr [0]]=arr[length-1] //{queen:beyonce}
return obj
}


var arr = ["queen", "referee", "cat", "beyonce"]

var output = firstAndLast(arr) //{queen:beyonce}

【讨论】:

  • 哇!!!!太感谢了!!!这些是一些快速的答案。我真的很感激他们所有人。我不知道我可以使用(arr)。谢谢。
  • @JimmyChicaiza - 您只能选择一个作为答案,但您可以投票任何您喜欢的答案,每个答案只能投票一个。
  • @JimmyChicaiza 只是说,这不完全是因为给你的问题是写一个函数。
  • 是的,我明白了,我发现有趣的响应不仅有解决这个问题的一种方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 2012-07-02
  • 2020-11-15
  • 2011-01-10
  • 2011-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多