【问题标题】:filter with object references lodash使用对象引用过滤 lodash
【发布时间】:2016-11-17 13:01:39
【问题描述】:

我有一个数组,我需要对该数组进行分块并操作部分块但我想用它来更新我的原始数组

我是自学成才,没有计算机科学背景,所以在技术内部工作方面我处于劣势。

var markers = ["one","two","three","four","five","six","seven","eight","nine"]

var chunks = _.chunk(markers, 5)
var result = _.chain(chunks[0]).last().value();

result = 'newValue'
console.log(chunks);

console.log(markers);
//was hopping to get
// ["one","two","three","four","newValue","six","seven","eight","nine"]
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.13.1/lodash.min.js"></script>

【问题讨论】:

  • 您只想更改markers (markers[4] = "newValue") 中的第五个元素?还是每五个元素?
  • 只有一项。但是是否可以通过块[0][4] 更新标记[4] 并自动将标记[4] 更新为块[0][4] 的新值?
  • 如果你只想改变第五个元素,那绝对不需要_.chunk \ chunks
  • 对我来说有。这是我的问题的简化版本。我真正需要做的是完成一个完整的方向 api,它将为每个块数组提供一个新的顺序。因此,例如,如果我更改我的 chunk[0] 项目中的 order 属性,我希望它反映在我的主数组中。我应该只更新每个块然后展平我的块数组并用它更新主标记数组吗?
  • 您当前的示例输入和输出不足以理解您要做什么。你能添加更多的例子吗?

标签: javascript lodash


【解决方案1】:

我不太确定我的要求是否正确,但这会改变每个“块”的第一个和最后一个元素(没有真正拆分数组)。

var data = [
    "one","two","three","four","five",
    "one","two","three","four","five",
    "one","two","three"
];

var chunkSize = 5,
    numberOfChunks = Math.ceil(data.length / chunkSize),
    indexOfFirstElementInChunk,
    indexOfLastElementInChunk;

for (var i = 0; i < numberOfChunks; i++) {
    indexOfFirstElementInChunk = (i * chunkSize);
    data[indexOfFirstElementInChunk] = "first element";
  
    indexOfLastElementInChunk = Math.min(data.length, ((i + 1) * chunkSize)) - 1;
    if (indexOfFirstElementInChunk < indexOfLastElementInChunk) {
      data[indexOfLastElementInChunk] = "last element";
    }
}

console.log(data);

【讨论】:

    猜你喜欢
    • 2018-08-22
    • 2015-08-23
    • 2016-10-30
    • 1970-01-01
    • 2022-01-18
    • 2019-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多